Menu
CoddyTech

Связи в Inspector

Часть раздела Создание настоящих игр путешествия по Unity на Coddy. Урок 8 из 60.

Кнопку также можно настроить в Инспекторе, вообще не используя AddListener. Список On Click () у кнопки изначально пуст. Нажмите +, чтобы добавить строку; перетащите в слот объекта этой строки объект со скриптом, и в раскрывающемся списке функций появятся компоненты этого объекта, каждый со своими открытыми методами. Выберите Jukebox > NextTrack, и каждый щелчок будет вызывать этот метод:

public class Jukebox : MonoBehaviour
{
    public string[] tracks;
    private int current;

    public void NextTrack()
    {
        current = (current + 1) % tracks.Length;
        Debug.Log("Now playing: " + tracks[current]);
    }
}

В раскрывающемся списке отображаются методы, которые имеют модификатор public, возвращают void и не принимают параметров либо принимают один параметр типа int, float, string, bool или Object, значение которого задаётся в строке. Метод private NextTrack в списке не отображается, поэтому его нельзя выбрать. В строке метод сохраняется по имени: переименуйте NextTrack в SkipTrack — и в строке появится <Missing Jukebox.NextTrack>, а щелчки ничего не будут делать; в Console ошибки не появится.

Строки в Инспекторе подходят для кнопок, размещённых на сцене: любой член команды может увидеть и изменить, что вызывает кнопка, не открывая скрипт. AddListener в коде подходит для кнопок, создаваемых во время игры, и для вызовов, передающих значение из переменной; там компилятор обнаружит переименование метода. Слушатели, добавленные из кода, никогда не отображаются в списке On Click (), поэтому кнопка, настроенная обоими способами, вызывает оба метода.

challenge icon

Задание

Легко

Сделай так, чтобы три кнопки подъемного моста работали в Drawbridge.cs.

  1. В строке «При нажатии ()» каждой кнопки вызывается Raise, Lower или ToggleLamp. Переименуй LowerBridge в Lower.
  2. Напиши public void Raise(): bridge.localRotation поворачивается на 70 градусов вокруг оси x, а statusText отображает Bridge: up.
  3. Напиши public void ToggleLamp(): метод включает warningLamp, если она выключена, и выключает, если она включена.

Нажми «Играть»: каждая кнопка выполняет свою задачу. Затем нажми «Проверить».

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

using UnityEngine;
using TMPro;

public class Drawbridge : MonoBehaviour
{
    public Transform bridge;
    public TMP_Text statusText;
    public GameObject warningLamp;

    public void LowerBridge()
    {
        bridge.localRotation = Quaternion.Euler(0f, 0f, 0f);
        statusText.text = "Bridge: down";
    }
}

Все уроки раздела Создание настоящих игр

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