Создание объектов
Автор: Дмитрий Прокопьев
Как создавать объекты динамически?
В ситуациях когда мы хотим добавить объект на сцену динамически нам потребуется компонент, который уже находится на сцене - некоторый Spawner
, действующий по нашим правилам.
Такой компонент может создавать другие объекты на текущей сцене, так как он сам находится на ней. Для этого используется метод Instantiate
.
Важно. Метод Instantiate
принадлежит классу MonoBehaviour
, поэтому вызывать его можно только из компонента-наследника MonoBehaviour
.
Метод Instantiate
Instantiate
Может принимать в себя либо GameObject
, либо MonoBehavior
:
Если передать
GameObject
, то метод создаст его копию на текущей сцене и вернёт ссылку на нее с типомGameObject
:
Если передать
MonoBehaviour
, то метод создаст копию объекта, которому принадлежит переданный компонент. Затем метод вернёт ссылку на тот же компонент в копии с тем же типом, который был передан.
Второй вариант предпочтителен, так как он предлагает четкую типизацию. Допускается создание пустых компонентов для разметки объектов:
Позже эти компоненты зачастую перестают быть пустыми, так как выясняется, что требуется дополнительная функциональность. Таким образом, лучше всего хранить ссылку на тот компонент префаба, с которым нам нужно будет работать в копиях.
Перегрузки метода Instantiate
Instantiate
Рассмотрим часто применяемые перегрузки:
Префаб + transform объекта-родителя
Префаб + позиция + поворот
Last updated
Was this helpful?