Menu
CoddyTech

Добавление компонента

Часть раздела Основы скриптинга в Unity путешествия по Unity на Coddy. Урок 32 из 67.

gameObject.AddComponent<T>() добавляет объекту новый компонент типа T во время работы игры и возвращает его, чтобы ты мог настроить его в следующих строках. Он принадлежит GameObject, к которому скрипт обращается через gameObject. Когда игра запускается, этот костёр освещает себя тёплым оранжевым светом:

void Start()
{
    Light glow = gameObject.AddComponent<Light>();
    glow.color = new Color(1f, 0.5f, 0f);
    glow.intensity = 2f;
}

Компонент, добавленный таким способом, существует, пока работает игра. Останови Play — и объект вернётся к сохранённому в сцене состоянию, без Light. Твои собственные скрипты тоже являются компонентами: gameObject.AddComponent<Spinner>() добавляет Spinner, который начинает работать, как и любой другой скрипт.

Большинство компонентов можно добавлять несколько раз, но некоторые — нельзя: объект может содержать не более одного Rigidbody, и при запросе второго вместо этого появляется ошибка в Console. Код, который может выполниться больше одного раза, перед добавлением проверяет, есть ли уже у объекта этот компонент.

challenge icon

Задание

Средне

Кокос висит на пальме. Нажатие пробела встряхивает дерево: кокос получает компонент Rigidbody, поэтому на него действует сила тяжести, и он падает на песок.

  • До первого нажатия пробела кокос висит на месте.
  • Пробел добавляет компонент Rigidbody, только если у кокоса его ещё нет, поэтому последующие нажатия ничего не добавляют.

Нажми Play, нажми пробел, затем Check.

Попробуйте сами

using UnityEngine;

public class CoconutDrop : MonoBehaviour
{
    void Update()
    {
        // Space: добавить Rigidbody, если у кокоса его ещё нет
    }
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы скриптинга в Unity