В Unity каждый элемент на сцене называется игровым объектом (GameObject). Каждому игровому объекту соответствует строка в панели иерархии, которое расположено в левой части редактора.
Откроем пустой двумерный проект. По умолчанию на сцене создается главная камера, без которой мы бы не увидели в игре вообще ничего. Кликом по камере в панели иерархии открывается панель Инспектора игрового объекта, в которой отображаются свойства выбранного объекта.
Добавим еще один объект на сцену. Для добавления стандартных игровых объектов на сцену свеху панели иерархии расположен знак «+». Кликом по нему выпадает меню для создания различных типов игровых объектов. Выберем пункт «2D Object -> Sprites -> Circle» для создания спрайта с изображением круга.
Для справки: спрайт — это графический объект в компьютерной графике. Чаще всего это растровое изображение, которое можно отобразить на экране.
В центре игровой сцены появится белый круг, а в панели иерархии новая строка с надписью «Circle». Таким образом мы создали новый игровой объект с именем Circle. Рассмотрим его свойства в панели инспектора.
Все свойства объектов делятся на группы или разделы. В данном случае – первый раздел, задает имя объекта - Circle, затем идет раздел «Transform»и последний раздел «Sprite Renderer».
Рядом с названиями разделов «Transform» и «Sprite Renderer» слева расположены маленькие стрелки, нажимая на которые можно свернуть или развернуть эти разделы (группу свойств). Каждая такая группа называется в Unity компонентом. Мы можем добавлять или удалять компоненты при помощи кнопки «Add Component», которая расположена ниже. Таким образом у игрового объекта Circle при создании есть два компонента – «Transform» и «Sprite Renderer».
Выбрав в иерархии объект камеры, в панели инспектора мы увидим также два компонента – «Transform» и «Camera».
Получается, что верхняя часть одинаковая для двух объектов круга и камеры. Сверху отображается имя игрового объекта (которое лучше делать уникальным). Далее располагается компонент «Transform», в котором указано положение (Position) по всем трем координатным осям X, Y, Z, затем угол поворота (Rotation) относительно трех осей и коэффициент масштабирования (Scale) также относительно всех трех осей. В юнити по умолчанию ось Z есть всегда, просто она практически не используется в 2D приложениях, за исключением некоторых ситуаций, одну из которых мы рассмотрим далее.
У всех объектов в игровом мире есть свое четкое положение, поэтому этот раздел автоматически добавляется любому игровому объекту. Компонент «Transform» нельзя удалить!
Отличие объектов камеры и круга заключается в том, что у камеры есть компонент «Camera», при помощи которого мы можем изменить настройки камеры в нашей игре, а у круга компонент «Sprite Renderer», который «рисует» изображение круга в позиции игрового объекта. Именно эти компоненты превращают игровой объект в камеру или в графический элемент.
Камеры, персонажи, предметы, источники света, спецэффекты в вашей игре — все это игровые объекты. Однако пустой игровой объект ничего не может делать сам по себе, нужно добавить ему определенные компоненты, прежде чем объект сможет стать персонажем или источником освещения.
Таким образом, можно представить игровой объект в виде пустой коробки (или контейнера), в которую мы добавляем различные компоненты. При создании эту коробку характеризуют только имя (тэг, слой), её местоположение, масштаб и ориентация в пространстве. При добавлении новых компонентов в коробку изменяется её функциональность. Компоненты могут быть добавлены или удалены по решению разработчика в панели инспектора игрового объекта. Unity имеет большое количество различных типов встроенных компонентов, а также вы можете создавать свои собственные компоненты с помощью скриптов (Unity Scripting API).
Если мы возьмем пустой игровой объект с обязательными общими характеристиками и компонентом Transform, и добавим к нему компонент «Sprite Renderer», то получим объект с графическим компонентом, в котором можно задать изображение для этого игрового объекта.
Компонент «Light» позволит превратить игровой объект в источник освещения, который будет освещать мир вокруг себя. Компонент «Audio Source»заставит объект звучать согласно заданному звуковому файлу. А компонент «Camera» превратит объект в игровую камеру, которых в игре может быть несколько.
Композицией нескольких компонентов можно создавать абсолютно уникальные игровые объекты! Например, возьмем компонент «Sprite Renderer» – и создадим объект дерева, добавим компонент Audio Source – получим дерево со звуками шелестящей на ветру листвы. Затем добавим компонент Light и наше дерево с озвучкой будет еще и светящимся!
У каждого компонента есть свои внутренние поля настроек, которые мы будем называть свойствами. Таким образом образуется цепочка: игровой объект -> компонент -> свойства компонента. Например, у игрового объекта Circle есть компонент «Transform», у которого свойство «Position» задано вектором (-4.5, 3.5, 0) (подробнее про вектора можно прочитать в статье). Также у игрового объекта Circle есть компонент «Sprite Renderer», у которого значение свойства «Sprite» связано со спрайтом по имени Circle.
Как уже упоминалось все объекты на сцене имеют 3 координаты:
· горизонтальная (X)
· вертикальная (Y)
· глубина (Z)
Координаты — это расстояние, на котором GameObject находится либо от центра сцены (если у него нет родителя), либо от родителя (если он есть). Про родителей и зачем они нужны можно почитать в отдельной статье.
Оси направлены следующим образом:
· горизонтальная ось (X) направлена слева направо: чем правее находится объект, тем его координата Xбольше;
· вертикальная ось (Y) направлена снизу вверх: чем выше объект, тем его координата Yбольше;
· ось глубины (Z) направлена от нас перпендикулярно монитору: чем дальше объект от нас, тем его координата Z больше.
В двумерных проектах ось Z практически не используется. Но в случае с камерой, видно, что ее координата Zравна -10, так как камера должна находиться на некотором расстоянии от объектов сцены, чтобы они попадали в поле её зрения.
Если перетащить мышью объект круга в другое место, то координаты X и Y в свойстве «Position» компонента «Transform» изменятся.
Поворот и масштаб также задаются тремя составляющими относительно осей. Например, координата X свойства «Rotation» компонента «Transform» задает угол поворота относительно оси X. А координата Y свойства «Scale» компонента «Transform» задает коэффициент масштабирования относительно оси Y.
Если мы добавим на сцену еще один игровой объект квадрата, то изменив его угол поворота относительно оси Z и масштаб по оси X, мы получим следующий результат: