Получение компонента
Часть раздела Основы скриптинга в 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.
Задание
СреднеКаждый щелчок переключает сигнальный огонь: красный, жёлтый, зелёный, затем снова красный.
- Добавь поле
Renderer rend;и задай ему значение вStart()с помощьюGetComponent<Renderer>(). - При нажатии
Input.GetMouseButtonDown(0)увеличивай значение поляint stepна 1 и сбрасывай его до 0, когда оно достигнет 3. - Задавай для
rend.material.colorзначенияColor.red,Color.yellowилиColor.greenдля шагов 0, 1 или 2.
Нажми «Играть» и щёлкни по игровому полю: цвет огня изменится. Затем нажми «Проверить».
Попробуйте сами
using UnityEngine;
public class SignalLight : MonoBehaviour
{
void Start()
{
}
void Update()
{
// Каждый щелчок: красный, затем жёлтый, затем зелёный, затем снова красный
}
}
Все уроки раздела Основы скриптинга в Unity
1Основы C# в Unity
Привет, UnityПеременныеДля дробных чисел нужна fТекст в консолиПеременные, которые запоминаютЕсли и иначеСравнение чиселПовторение: сборщик монет7Циклы и методы
Повторение с forЦиклы внутри цикловНапишите методМетоды, которые возвращают значениеМассивыПовторение: лестница10Поиск объектов
Поиск по имениТегиПоиск по типуСсылки лучше поискаNull в UnityПовторение: ближайшая монета13Проект: уворачиваемся от блоков
БегунБлоки с неба2Заставь двигаться
Размести кубДвигай каждый кадрПоворачивай каждую секундуУправляй клавишамиПовторение: веди куб5Векторы
Сложение векторовНаправленияЛокальное и мировое пространствоСкорость по диагоналиРасстояние между объектамиVector3 — это структураПовторение: пилот дрона8Игровые объекты и компоненты
Ссылки в InspectorПолучение компонентаОтсутствующие компонентыДобавление компонентаRequireComponentПоказ и скрытиеПовторение: выключатель светаПотренируйтесь самостоятельно: Песочница Unity