Menu
CoddyTech

Ссылки в Inspector

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

Поле может содержать другой объект. Задай ему тип, например Transform или GameObject, и в Inspector появится пустой слот, который можно заполнить, перетащив в него объект из Hierarchy. Этот скрипт камеры следует за объектом, перетащенным в поле 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), камера без игрока останется на месте, а не вызовет ошибку.

challenge icon

Задание

Средне

Каждый охранник идет к своему посту. В сцене в Inspector объекта Guard1 в поле с именем post указан объект Post1. Пост Guard2 еще не создан, поэтому его слот post пуст.

  • Добавь в скрипт Guard поле типа Transform с именем post.
  • Охранник идет к позиции своего поста со скоростью speed единиц в секунду и останавливается у него, даже если пост позже переместят.
  • Охранник с пустым слотом поста остается на месте без ошибки.

Нажми Play, выбери каждого охранника в Hierarchy, чтобы увидеть его слот Post, затем нажми Check.

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

using UnityEngine;

public class Guard : MonoBehaviour
{
    // post: Transform, к которому идёт этот охранник; задаётся в Inspector
    public float speed = 2f;

    void Update()
    {
        // Идти к посту со скоростью speed. Охранник с пустым полем post остаётся на месте.
    }
}
quiz iconПроверьте себя

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

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