Menu
CoddyTech

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

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

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

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

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

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

challenge icon

Задание

Средне

Нажатие пробела трясёт пальму, и кокос падает.

  1. В Update() при Input.GetKeyDown(KeyCode.Space) добавь Rigidbody с помощью gameObject.AddComponent<Rigidbody>().
  2. Добавляй его, только если у кокоса его ещё нет: !TryGetComponent(out Rigidbody rb). Повторное нажатие пробела не добавит второй Rigidbody.

Нажми «Играть» и нажми пробел: кокос упадёт на песок. Затем нажми «Проверить».

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

using UnityEngine;

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

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

Потренируйтесь самостоятельно: Песочница Unity