Практика 2. Объекты

Управление объектами Unity

1. Префабы Unity

Префабы (англ. Prefab, от Prefabricated - сборный) - шаблон созданных вами объектов, который можно переиспользовать для создания похожих, но уникальных, объектов. Любое объекты созданный от префаба будут иметь те же компоненты, что и в самом префабе.

Префабы используются для того, чтобы создать много объектов одного и того же типа, например для игр это могут быть пули огнестрельного оружия, враги, бонусы, т.д.

Помимо того, что префабы можно взять из Asset Store, их можно создать самому из своих объектов. Самый простой способ - перетащить объект из Hierarchy прямо в панель Project.

Создайте префаб объекта Cube из предыдущей работы.



Рис. 1. Префаб Cube в Hierarchy


Так как теперь наш Cube связан с префабом, он отображается в панели Hierarchy синим цветом. Изменяя параметры префаба в сцене, меняется только тот уникальный объект. Нажав на стрелку можно перейти к параметрам объекта в префабе, где можно настроить его самого, изменяя все объекты в сцене, использующие префаб.

2. Динамическое управление объектами

Скорее всего в любом объектно-ориентированном приложении требуется создание или уничтожение объектов во время выполнения. Для этого в Unity существуют различные методы.

Удаление всевозможных элементов в сцене выполняется с помощью метода Destroy.

Измените скрипт dropbox как указано на рис. 2.



Рис. 2. Уничтожение объектов


При выполнении данного скрипта сначала исчезнет сам скрипт (при столкновении не будет сообщения), затем через 2.5 секунд компонент Rigidbody (объект “повиснет в воздухе”), затем еще через столько же исчезнет Wall, а потом и сам объект, к которому был прикреплен скрипт.

Мы использовали gameObject - это есть объект со скриптом. Для каждого объекта код скрипта выполняется заново с другим gameObject.

GameObject.Find - статический метод класса GameObject, позволяющий найти объект с определенным названием.

GetComponent<...> - выбрать компонент определенного типа.

this - данный класс, выполняющий код, в нашем случае - объект dropbox, наследующий MonoBehaviour - то есть это и есть наш скрипт.

Теперь создадим объекты при помощи скрипта. Для этого мы возьмем новый объект и прикрепим к нему новый скрипт (из старого можно убрать метод Start, чтобы созданные объекты не исчезали).

Создайте объект Empty с Transform, как на рис. 3, и создайте для него скрипт с названием emitter.


Рис. 3. Объект Emitter


Старый Cube можно удалить из сцены, чтобы было точно ясно что новый был создан скриптом. Наш Emitter создаст объект по своему местоположению.

Запишите метод Start для emitter по рис. 4.



Рис. 4. Скрипт emitter

Объект transform относится к объекту, имеющему данный скрипт.

InputPrefab был задан глобально в классе с префиксом public, а значит - это объект, который мы задаем через Inspector. Откройте параметры объекта Emitter и заметьте, что Input Prefab не задан (стоит значение None). Если запустить сцену, то Unity выдаст ошибку. В Inspector нужно задать префаб, который мы хотим разместить скриптом в сцене, выбрав его там, или перетащив из панели Project в поле Input Prefab.

Задайте наш префаб Cube в поле Input Prefab.

При запуске можно увидеть новый куб, созданный скриптом, и к тому же падающий с неба, так как мы его создали из позиции объекта Emitter, имеющего Y = 10.

Комментарии

Популярные сообщения из этого блога

Лабораторные работы

О курсе...