Ссылки лучше поиска
Часть раздела Основы скриптинга в Unity путешествия по Unity на Coddy. Урок 59 из 85.
Скрипт может получить доступ к другому объекту четырьмя способами: через поле, заданное в Inspector, с помощью поиска GameObject.Find по имени, поиска по тегу или поиска FindAnyObjectByType по типу. Для объекта, который находится на сцене с самого начала, в коде Unity используют поле Inspector по трём причинам:
- Скорость. Ссылка заполняется до начала игры. При каждом поиске просматриваются объекты сцены, а поиск в
Update()выполняется каждый кадр. - Надёжность. Строка с именем перестаёт работать, если кто-то переименует объект: Find возвращает
null, и ошибка появляется позже, в строке, где это значение используется. Пустое поле Inspector вызывает UnassignedReferenceException, в котором указаны имя поля и скрипта. - Наглядность. В Inspector видно, от чего зависит скрипт. Вызов Find скрывает эту зависимость в коде.
// назначается один раз в Inspector: поиск не требуется, а переименование ничего не меняет
[SerializeField] private Transform door;
// поиск выполняется на каждом кадре, а после переименования двери результат — null
void Update()
{
Transform d = GameObject.Find("Door").transform;
}Поиск полезен в некоторых случаях: для объектов, которые появляются только во время игры, например при создании во время игрового процесса, и для скриптов, которые должны работать на любой сцене. Даже в таких случаях выполняйте поиск один раз в Start() и сохраняйте результат в поле.
Попробуйте сами
В этом уроке нет задания по программированию.
Все уроки раздела Основы скриптинга в Unity
1Основы C# в Unity
Привет, UnityПеременныеДля дробных чисел нужна fТекст в консолиПеременные, которые запоминаютЕсли и иначеСравнение чиселПовторение: сборщик монет7Циклы и методы
Повторение с forЦиклы внутри цикловНапишите методМетоды, которые возвращают значениеМассивыПовторение: лестница10Поиск объектов
Поиск по имениТегиПоиск по типуСсылки лучше поискаNull в UnityПовторение: ближайшая монета13Проект: уворачиваемся от блоков
БегунБлоки с неба2Заставь двигаться
Размести кубДвигай каждый кадрПоворачивай каждую секундуУправляй клавишамиПовторение: веди куб5Векторы
Сложение векторовНаправленияЛокальное и мировое пространствоСкорость по диагоналиРасстояние между объектамиVector3 — это структураПовторение: пилот дрона8Игровые объекты и компоненты
Ссылки в InspectorПолучение компонентаОтсутствующие компонентыДобавление компонентаRequireComponentПоказ и скрытиеПовторение: выключатель светаПотренируйтесь самостоятельно: Песочница Unity