Приветствую начинающих разработчиков Unity. В данной статье мы рассмотрим сразу четыре возможности, которые можно реализовать с компонентами объекта, через скрипт, а именно: получение ссылки на компонент, добавление компонента, отключение компонента и удаление компонента.
Давайте пройдёмся по порядку.
Получение ссылки на компонент
Предположим, у нас имеется переменная obj, которая хранит в себе ссылку на наш объект. И нам необходимо получить ссылку на компонент данного объекта, например, на компонент Rigidbody. Для этого воспользуемся методом GameObject.GetComponent.
Rigidbody _rb = obj.GetComponent<Rigidbody>();
Тепер в переменной _rb у нас имеется ссылка на компонент Rigidbody, объекта obj. Так же убедитесь в том, что компонент, на который вы хотите получить ссылку, добавлен к Вашему объекту, иначе данный код работать не будет.
Добавление компонента
Как и в предыдущем примере, предположим, у нас имеется переменная obj, которая хранит в себе ссылку на наш объект.
Там нам необходимо добавить компонент для нашего объекта. Для этого нам понадобится метод GameObject.AddComponent. Воспользуемся им, добавив компонент, например, Rigidbody:
Rigidbody _rb = obj.AddComponent<Rigidbody>();
Готово! К объекту obj мы добавили компонент Rigidbody, и в переменную _rb записали ссылку для её хранение. Но на самом деле хранить ссылку на добавленный компонент не обязательно, поэтому, Вы можете обойтись и без этого.
Отключение компонента
Отключение и включение компонента используется довольно часто, для временного отключения или включения его свойств.
Предположим, что у Вас имеется переменная _rb, которая хранит в себе ссылку на какой-либо компонент.
У любого компонента имеется свойство enabled, которое принимая значения true и false, включает и отключает компонент соответственно. Воспользуемся им:
_rb.enabled = true;
Данный код отключит Ваш компонет. А чтобы его опять включить, поменяйте значение true на false.
_rb.enabled = false;
Удаление компонента
Удаление компонента, пожалуй, самое простое из всех тем этой статьи. За удаление компонента отвечает метод Destroy.
Destroy(_rb);
Так же убедитесь, что в переменной _rb имеется ссылка на Ваш компонент, который Вы хотите удалить.
На этом всё, теперь Вы умеете работать с компонентами :) Если остались вопросы, задавайте их в комментариях.