Menu
CoddyTech

Получение компонента

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

GameObject — это контейнер для компонентов: Transform, MeshRenderer, который отображает объект, коллайдер и ваши скрипты. GetComponent<Renderer>() возвращает компонент указанного типа на том же объекте, и с его помощью скрипт меняет поведение этого компонента. transform — это готовое сокращение для Transform; все остальные компоненты нужно получать самостоятельно.

Этот куб становится красным при нажатии пробела. Он находит свой Renderer один раз, в Start(), и сохраняет его в поле: GetComponent каждый раз при вызове ищет компоненты объекта, а результат не меняется.

Renderer rend;

void Start()
{
    rend = GetComponent<Renderer>();
}

void Update()
{
    if (Input.GetKeyDown(KeyCode.Space))
    {
        rend.material.color = Color.red;
    }
}

rend.material при первом использовании создаёт для этого объекта собственную копию материала, поэтому цвет других объектов, использующих общий материал, не меняется. В Unity для некоторых цветов есть готовые названия, например Color.red, Color.green, Color.blue, Color.yellow и Color.gray; new Color(r, g, b) задаёт любой другой цвет, причём каждое значение находится в диапазоне от 0 до 1.

challenge icon

Задание

Средне

Каждый щелчок переключает сигнальный огонь: красный, жёлтый, зелёный, затем снова красный.

  1. Добавь поле Renderer rend; и задай ему значение в Start() с помощью GetComponent<Renderer>().
  2. При нажатии Input.GetMouseButtonDown(0) увеличивай значение поля int step на 1 и сбрасывай его до 0, когда оно достигнет 3.
  3. Задавай для rend.material.color значения Color.red, Color.yellow или Color.green для шагов 0, 1 или 2.

Нажми «Играть» и щёлкни по игровому полю: цвет огня изменится. Затем нажми «Проверить».

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

using UnityEngine;

public class SignalLight : MonoBehaviour
{

    void Start()
    {
    }

    void Update()
    {
        // Каждый щелчок: красный, затем жёлтый, затем зелёный, затем снова красный
    }
}

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

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