GameObject.AddComponent
Добавляет компонент класса className на игровой объект.
GameObject.AddComponent with string argument has been deprecated. Use AddComponent(Type) or the generic version instead.
Description
Добавляет компонент типа componentType к игровому объекту. Пользователи C# могут использовать дженерик-версию функции.
Note that there is no RemoveComponent(), to remove a component, use Object.Destroy.
Description
Дженерик функции. Для получения дополнительной информации смотрите страницу, посвященную Дженерик функциям.
How to add components using script in Unity
Unity works based on a component system. Every Gameobject’s characteristics are defined by the components added to it. For example, the position is defined by the transform component and the collision is defined by the collider component. This component-based system requires a constant addition or removal of components to alter the behavior of the Gameobjects. In this tutorial, we will see how to add a new component to a Gameobject and also how to access and modify the existing components.
Adding component using script
Adding component to a Gameobject during gameplay is not the right way to manage your code, adding a new component takes up a lot of memory and if you frequently add or remove a component from a Gameobject during gameplay, there will be performance issues. We will discuss on how to to efficiently work with components in the later part of this tutorial.
Enable and disable component script
Get the attached component and then enable it when required. One thing to note here is, the GetComponent function works even with disabled components.
Hope this tutorial answered all your questions regarding adding and removing a component from your Unity Gameobject. If you have any more questions, feel free to leave a comment below.
Как получить ссылку / добавить / отключить / удалить компонент из скрипта
Приветствую начинающих разработчиков Unity. В данной статье мы рассмотрим сразу четыре возможности, которые можно реализовать с компонентами объекта, через скрипт, а именно: получение ссылки на компонент, добавление компонента, отключение компонента и удаление компонента.
Давайте пройдёмся по порядку.
Получение ссылки на компонент
Предположим, у нас имеется переменная obj, которая хранит в себе ссылку на наш объект. И нам необходимо получить ссылку на компонент данного объекта, например, на компонент Rigidbody. Для этого воспользуемся методом GameObject.GetComponent.
Тепер в переменной _rb у нас имеется ссылка на компонент Rigidbody, объекта obj. Так же убедитесь в том, что компонент, на который вы хотите получить ссылку, добавлен к Вашему объекту, иначе данный код работать не будет.
Добавление компонента
Как и в предыдущем примере, предположим, у нас имеется переменная obj, которая хранит в себе ссылку на наш объект.
Там нам необходимо добавить компонент для нашего объекта. Для этого нам понадобится метод GameObject.AddComponent. Воспользуемся им, добавив компонент, например, Rigidbody:
Готово! К объекту obj мы добавили компонент Rigidbody, и в переменную _rb записали ссылку для её хранение. Но на самом деле хранить ссылку на добавленный компонент не обязательно, поэтому, Вы можете обойтись и без этого.
Отключение компонента
Отключение и включение компонента используется довольно часто, для временного отключения или включения его свойств.
Предположим, что у Вас имеется переменная _rb, которая хранит в себе ссылку на какой-либо компонент.
У любого компонента имеется свойство enabled, которое принимая значения true и false, включает и отключает компонент соответственно. Воспользуемся им:
Данный код отключит Ваш компонет. А чтобы его опять включить, поменяйте значение true на false.
Удаление компонента
Удаление компонента, пожалуй, самое простое из всех тем этой статьи. За удаление компонента отвечает метод Destroy.
Так же убедитесь, что в переменной _rb имеется ссылка на Ваш компонент, который Вы хотите удалить.
На этом всё, теперь Вы умеете работать с компонентами 🙂 Если остались вопросы, задавайте их в комментариях.
Урок 15 — Добавление компонентов с помощью скриптов
В уроке рассказывается, как добавить компонент к объекту используя скрипты и быть увереным, что мы их добавили только однажды.
Для того, чтобы добавить компонент в run-time воспользуемся скриптами.
В нашем примере у нас снова есть платформа («platform») и ящик(«box» с rigidbody) который на нее падает.
Попробуем добивать компонент к платформе, как только ящик упадёт на неё.
Добавим скрипт addComp В класс добивим следующий код:
void OnCollisionEnter(Collision myCollision)
if (myCollision.gameObject.name == “Platform”)
Скрипт добавим к ящику. Жмем play и видим — как только ящик падает на платформа, она тоже начнёт падать.
Но в консоле вы увидите предупреждение:
Can’t add component ‘Rigidbody’ to Platform because such a component is already added to the game object!
Мы получили это сообщение, поскольку пытаемся добавить компонент Rigidbody каждый раз, когда ящик сталкивается с платформой, то есть — мы добавляем его более одного раза. Чтоб этого не происходило, нам нужно добавить проверку и добавлять компонент, только в случае его отсутствия. Добавим в OnCollisionEnter() еще одно условие:
void OnCollisionEnter(Collision myCollision)
if (myCollision.gameObject.name == “Platform”)
Теперь запустим приложение и убедимся, что в консоли отсутствует предупреждение.