Menu
CoddyTech

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

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

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

Этот куб становится красным при нажатии Space. Он находит свой 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

Задание

Средне

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

Получите Renderer один раз в Start() и сохраните его в поле. Используйте Color.red, Color.yellow и Color.green.

Нажмите Играть, несколько раз щёлкните по игровому окну, затем нажмите Проверить.

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

using UnityEngine;

public class SignalLight : MonoBehaviour
{

    void Start()
    {
    }

    void Update()
    {
        // При каждом щелчке: красный, затем жёлтый, затем зелёный, затем снова красный
    }
}
quiz iconПроверьте себя

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

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