Using Components
Unity Manual > User Guide > Building Scenes > Using Components

Using Components

Компоненты — это функциональные части объекта.

Объекты содержат множество разных компонентов. По умолчанию все объекты содержат компонент Transform. Он определяет местоположение объекта, угол его поворота и масштаб. Без этого компонента объект не будет иметь места в мире. Для примера создадим пустой объекта: GameObject→Create Empty.

Каждый объект содержит компонент Transform.

Запомните, Inspector всегда отображает компоненты, прикреплённые к выбранному объекту. Когда компонент добавлен или удалён, это отображается и в Inspector. Так же, можно использовать Inspector для изменения значений свойств любого компонента (включая скрипты).

Adding Components

Компоненты добавляются через меню Component. Добавим для примера компонент Rigidbody пустому объекту. Для этого используем Component→Physics→Rigidbody. После этого свойства компонента будут отображены в Inspector.

Объект с компонентом Rigidbody.

Вы можете прикрепить любое количество или комбинацию компонентов к одному GameObject. Некоторые компоненты лучше всего работают в сочетании с другими. Например, Rigidbody работает с любым коллайдером (Collider). Rigidbody контролирует преобразование (Transform)  с помощью физического движка Ageia PhysX, а коллайдер позволяет Rigidbody сталкиваться и взаимодействовать с другими коллайдерами. Другой пример комбинирования компонентов – системы частиц (Particle System). Они используют эмиттер частиц (Particle Emitter), аниматор частиц (Particle Animator), и рендерер частиц (Particle Renderer), чтобы создать группу движущихся частиц.

Если Вы хотите узнать больше об использовании конкретного компонента, Вы можете прочитать о любом из них в Справочнике по компонентам (Component Reference). Кроме того, Вы можете получить доступ к странице справочного руководства из Unity, кликнув на небольшой значок «?» в заголовке компонента в Inspector.

Editing Components

Компонентам присуща высокая гибкость настройки. Свойства компонента могут быть изменены непосредственно в редакторе или через скрипт. Существует два типа свойств: переменные (Values) и ссылки (References).

На следующем изображении приведён пустой объект с компонентом Audio Source.

Этот компонент содержит одно свойство-ссылку и семь свойств-переменных. Audio Clip — это свойство-ссылка. Когда компонент Audio Source начинает воспроизведение звука, звук берётся из файла, на который ведёт ссылка в свойстве Audio Clip. Если ссылки нет, то произойдёт ошибка и воспроизведение не начнётся. Проще всего установить ссылку перетащив аудиофайл из Project View на свойство.

Теперь Audio Clip содержит ссылку на аудиофайл.

Компоненты могут содержать ссылка на любые другие типы компонентов, файлы и объекты. Ссылку на любого из них можно создать просто перетащив его на свойство-ссылку. Подробная информация об использовании скриптов и свойств доступна в Scripting Essentials со страницы Tutorials.

Оставшиеся семь свойств Audio Clip — это переменные. Они могут быть изменены простым нажатием на них и последующим вводом значения. Так же можно зажать ЛКМ на свойстве и передвигать мышь по горизонтали, меняя значение.

Свойства-переменные могут содержать не только числа, но и текст. В качестве примера можно привести компонент Text Mesh и его свойство Text.

Некоторые переменные могут содержать текст , как свойство-переменная Text компонента Text Mesh.

Testing out Properties

Во время предпросмотра можно изменять свойства любого объекта в Inspector. Для примера, можно экспериментировать с разными значениями высоты прыжка. Если внутри скрипта создана переменная Jump Height, то во время предпросмотра можно изменить её значение, нажать кнопку прыжка и увидеть изменения. При выходе из режима предпросмотра значения свойств будут возвращены к исходной позиции. Это впечатляет.

Removing Components

Если нужно удалить компонент, можно щёлкнуть ПКМ по названию компонента и выбрать Remove Component. Или нажать на иконку шестерёнки там же и выбрать Remove Component. Значения свойств удалённых компонентов восстановить нельзя, так что будьте осторожны.

The Component-Script Relationship

Скрипты на первый взгляд сильно отличаются от компонентов, но на самом деле тоже являются компонентами. В принципе, скрипт — это компонент, который создаёт сам пользователь.

Scripting Components

Ко многим компонентам можно получить прямой доступ из любого скрипта. Например, если нужно получить доступ к функции Translate компонента Transform, нужно написать transform.Translate() или gameObject.transform.Translate(). В первом случае обращение будет идти к тому объекту, к которому прикреплён сам скрипт, во втором — к указанному в вызове (gameObject в данном случае).

Список всех компонентов, к которым можно получить доступ, приведён на странице GameObject в Scripting Reference.

Using GetComponent()

Многие компоненты недоступны как члены класса GameObject. Если не получается получить доступ к ним неявным образом, нужно сделать это явно. Для этого используется функция GetComponent("component name") и сохраняется ссылка на результат. Обычно это используется в случаях, когда нужно сделать ссылку на другой скрипт, прикреплённый к объекту.

Предположим, Вы пишите скрип B и хотите сделать в нём ссылку на скрипт А, который прикреплён к тому же объекту. Вы должны будете использовать GetComponent() для создания этой ссылки. В скрипте B нужно написать:

scriptA = GetComponent("ScriptA");

Теперь Вы сможете получить доступ к любым переменным скрипта А написав scriptA.variableName в скрипте B.
Подробная информация об использовании GetComponent() имеется на странице GetComponent() в справке по компонентам.