Menu
CoddyTech

Связи в Inspector

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

Кнопку также можно настроить в Inspector, вообще не используя AddListener. Список On Click () у Button изначально пуст. Кнопка + добавляет строку; перетащи объект со скриптом в слот объекта строки, и в выпадающем списке функций отобразятся компоненты этого объекта, каждый со своими открытыми методами. Выбери 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, значение которого задаётся в строке. Приватный NextTrack в списке не отображается, поэтому его нельзя выбрать. В строке метод сохраняется по имени: переименуй NextTrack в SkipTrack, и в строке появится <Missing Jukebox.NextTrack>, а щелчки ничего не будут делать — в Console ошибки не будет.

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

challenge icon

Задание

Легко

У подъёмного моста замка есть три кнопки, подключённые в Inspector к скрипту Drawbridge на BridgeControl. Пока ни одна из них не работает. Выбери RaiseButton, LowerButton и LampButton в Hierarchy и прочитай каждую строку On Click (): в ней указано, какой метод вызывается при нажатии. Сделай так, чтобы все три кнопки работали, изменив только Drawbridge.cs:

  • Один из методов уже написан под другим именем. Назови его так, как указано в соответствующей строке.
  • При подъёме bridge поворачивается на 70 градусов вокруг оси x (его localRotation), а в statusText отображается Bridge: up.
  • Кнопка лампы включает warningLamp, если она выключена, и выключает, если она включена.

Нажми Play, проверь каждую кнопку, затем нажми Check.

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

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";
    }
}
quiz iconПроверьте себя

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

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