GameObjects
Unity Manual > User Guide > Building Scenes > GameObjects

GameObjects

В этом параграфе описывается работа с объектами (GameObjects).

What are GameObjects?

Любой объект в игре — это GameObject. Поэтому я (переводчик) и оперирую сокращённым термином «объект».
Следует понимать, что сам по себе объект ничего не делает. Ему требуются специальные свойства, прежде чем он станет персонажем, окружением или визуальным эффектом.

Объекты — это контейнеры. Они могут содержать в себе различные элементы, комбинации которых превращают объект в остров с картой освещения (lightmap) или в автомобиль, движущийся по всем законам физики. Эти элементы называются компонентами (Components). В зависимости от того, что нужно создать, объекту присваиваются различные комбинации компонентов. Считайте объект пустой кастрюлей, а компоненты — различными ингредиентами, которые составят рецепт геймплея. О компонентах можно больше прочитать в параграфе Using Components.

The GameObject-Component Relationship

Мы знаем, что объект содержит компоненты. Их взаимосвязь мы рассмотрим на примерее наиболее часто используемого компонента — Transform.
Добавим в сцену пустой объект: GameObject→Create Empty (Shift+Ctrl+N) и посмотрим в Inspector.


Inspector пустого объекта

Вверху мы видим имя (Name), тег/флаг (Tag) объект и слой (Layer), на котором он закреплён. Каждый объект содержит компонент Transform. Нельзя создать объект, его не содержащий. Но объект может содержать и другие компоненты.


Объект Main Camera, добавляемый в сцену по умолчанию.

Рассматривая объект Main Camera, мы видим, что он содержит разные компоненты: Camera Component, GUILayer, Flare Layer и Audio Listener. Все эти компоненты предоставляют дополнительную функциональность объекту. Без них, Main Camera не смогла бы отрисовывать игровую графику для пользователя. Rigidbodies, Colliders, Particles и другие компоненты могут быть добавлены любому объекту.

The Transform Component

Компонент Transform используется чаще остальных. Он определяет позицию, угол поворота и масштаб объекта. Если объект не имел бы данного компонента, то он просто не существовал бы в игровом пространстве и компьютерной памяти. Компонент Transform так же обеспечивает функционирование концепции наследования. Больше о компоненте Transform можно узнать в справке по компонентам на странице Transform Component.

The GameObject-Script Relationship

Когда скрипт создан и прикреплён к объекту, он отображается в Inspector как компонент. Технически, он и является компонентом.

Любые публичные переменные, которые объявлены в скрипте, становятся доступными в Inspector объекта. Когда вы пишете скрипт, вы можете получать прямой доступ к любому члену класса GameObject. Вы можете посмотреть список всех членов класса GameObject здесь. Если любой из вышеупомянутых  классов прикреплён к GameObject как компонент, вы можете получить прямой доступ к этому компоненту через скрипт, просто набрав имя члена. Для примера, написать transform эквивалентно  gameObject.transform.  gameObject устанавливается компилятором, кроме случаев, когда вы специально ссылаетесь на другой GameObject.

Написав this, Вы получите доступ к компоненту-скрипту, который Вы пишете. this.gameObject ссылается на GameObject, к которому прикреплен скрипт. Вы можете получить доступ к тому же GameObject, просто написав gameObject. Аналогично, писать this.transform – то же самое, что просто писать transform. Если Вы хотите получить доступ к компоненту, который не включен в GameObject в качестве  члена, следует использовать gameObject.GetComponent(), о котором рассказывается на следующей странице.