Работа с объектами и компонентами
Создадим переменную типа Light для взаимодействия с компонентом освещения в Unity. Назовём её myLight с модификатором доступа private. Она не будет отображаться в редакторе Unity.
Функция, присваивающая переменной myLight значение компонента Light объекта, к которому прикреплён скрипт, использует метод GetComponent<Light>.
GetComponent<Light> работает, только если компонент Light присутствует на объекте. Если скрипт прикреплён к Main Camera без компонента Light, метод вернёт null. Поэтому скрипт нужно прикрепить к объекту с компонентом Light (например, к Directional Light).
Условные операторы и работа с GameObject
В функции Update, вызываемой каждый кадр, используем условный оператор if с Input.GetKeyUp(KeyCode.Space) для отслеживания нажатия пробела. При нажатии, свойство enabled переменной myLight меняется на противоположное (включение/выключение света).
if (Input.GetKeyUp(KeyCode.Space)) {
myLight.enabled = !myLight.enabled;
}
Создадим переменную object типа GameObject. Она будет отображаться в редакторе Unity, позволяя перетаскивать в неё объекты из иерархии сцены для управления через скрипт. object.SetActive(false) скрывает объект, а Destroy(object) удаляет его из сцены.
if (Input.GetKeyUp(KeyCode.a)) {
object.SetActive(false);
}
if (Input.GetKeyUp(KeyCode.s)) {
Destroy(object);
}
Изменение цвета объекта осуществляется через доступ к его компоненту Renderer и изменению свойства material.color.
if (Input.GetKeyUp(KeyCode.r)) {
object.GetComponent<Renderer>().material.color = Color.red;
} else if (Input.GetKeyUp(KeyCode.g)) {
object.GetComponent<Renderer>().material.color = Color.green;
} else if (Input.GetKeyUp(KeyCode.b)) {
object.GetComponent<Renderer>().material.color = Color.blue;
}
Циклы и создание объектов
В C# доступны циклы for, while и do while. Пример с циклом for создаёт несколько объектов. Создание объектов внутри Update неэффективно; лучше делать это при инициализации или в другом подходящем месте.
private int numEnemies = 10;
for (int i = 0; i < numEnemies; i++) {
Debug.Log("Create " + i + " enem");
}
Урок рассмотрел основные приёмы работы с объектами и компонентами в Unity, использование условных операторов и циклов для создания интерактивных элементов. Скрипты расширяют возможности Unity, позволяя создавать сложные проекты.