Menu
CoddyTech

Ссылки в 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 останется на месте, не вызывая исключение.

challenge icon

Задание

Средне

Отправьте каждого охранника на пост, указанный его инспектором.

  1. Добавьте поле public Transform post;. В слоте Guard1 находится Post1; слот Guard2 пуст.
  2. В Update(), если post == null, выполните return;, чтобы охранник без поста оставался на месте.
  3. Затем перемещайте его с помощью 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

Потренируйтесь самостоятельно: Песочница Unity