Ссылки в Inspector
Часть раздела Основы скриптинга в Unity путешествия по Unity на Coddy. Урок 43 из 85.
Поле может содержать другой объект. Задайте ему тип, например Transform или GameObject, и в Инспекторе появится пустой слот, который можно заполнить, перетащив в него объект из Иерархии. Этот скрипт камеры следует за объектом, перетащенным в поле player, и держится на 3 единицы выше и на 6 единиц позади него:
public Transform player;
void Update()
{
transform.position = player.position + new Vector3(0, 3, -6);
}Если слот оставить пустым, в нём будет отображаться None, а первая строка, которая его использует, будет каждый кадр вызывать исключение: UnassignedReferenceException: The variable player of CameraFollow has not been assigned. В следующей строке сообщения говорится, что нужно сделать: You probably need to assign the player variable of the CameraFollow script in the inspector. В сообщении указаны поле и скрипт, поэтому понятно, какой слот нужно заполнить.
Некоторые скрипты должны работать и с пустым слотом. Unity считает пустой слот равным null, поэтому такой скрипт проверяет его перед использованием. Если обернуть строку в Update() условием if (player != null), камера без объекта player останется на месте, не вызывая исключение.
Задание
СреднеОтправьте каждого охранника на пост, указанный его инспектором.
- Добавьте поле
public Transform post;. В слоте Guard1 находится Post1; слот Guard2 пуст. - В
Update(), еслиpost == null, выполнитеreturn;, чтобы охранник без поста оставался на месте. - Затем перемещайте его с помощью
Vector3.MoveTowards(transform.position, post.position, speed * Time.deltaTime).
Нажмите «Играть»: Guard1 пойдёт к своему посту, а Guard2 будет ждать. Затем нажмите «Проверить».
Попробуйте сами
using UnityEngine;
public class Guard : MonoBehaviour
{
// post: Transform, к которому идёт этот охранник; задаётся в Inspector
public float speed = 2f;
void Update()
{
// Иди к посту со скоростью speed. Охранник, у которого поле post пусто, остаётся на месте.
}
}
Все уроки раздела Основы скриптинга в Unity
1Основы C# в Unity
Привет, UnityПеременныеДля дробных чисел нужна fТекст в консолиПеременные, которые запоминаютЕсли и иначеСравнение чиселПовторение: сборщик монет7Циклы и методы
Повторение с forЦиклы внутри цикловНапишите методМетоды, которые возвращают значениеМассивыПовторение: лестница10Поиск объектов
Поиск по имениТегиПоиск по типуСсылки лучше поискаNull в UnityПовторение: ближайшая монета13Проект: уворачиваемся от блоков
БегунБлоки с неба2Заставь двигаться
Размести кубДвигай каждый кадрПоворачивай каждую секундуУправляй клавишамиПовторение: веди куб5Векторы
Сложение векторовНаправленияЛокальное и мировое пространствоСкорость по диагоналиРасстояние между объектамиVector3 — это структураПовторение: пилот дрона8Игровые объекты и компоненты
Ссылки в InspectorПолучение компонентаОтсутствующие компонентыДобавление компонентаRequireComponentПоказ и скрытиеПовторение: выключатель светаПотренируйтесь самостоятельно: Песочница Unity