Связи в 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 (), поэтому кнопка, настроенная обоими способами, вызывает оба обработчика.
Задание
ЛегкоУ подъёмного моста замка есть три кнопки, подключённые в 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";
}
}
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Создание настоящих игр
1Текст на экране
Холст и текстПокажем счётФорматирование чиселТаймер обратного отсчётаПовторение: спидометр4Сцены и уровни
Загрузить сценуПерезапустить уровеньСледующий уровеньСохранить между сценамиПовторение: выбор уровня7Управление временем
Пауза с timeScaleЗамедленное движениеНемасштабируемое времяПовторение: Bullet Time10Проект: 3D-платформер
ТрассаДвижущиеся платформы2Кнопки и экраны
Кнопки и onClickЛямбдыСвязи в InspectorВключение и выключение панелейШкалы здоровьяПовторение: магазин улучшений5Сохранение с помощью PlayerPrefs
Сохранение числаЗагрузка со значением по умолчаниюРекордСохранение настроекПовторение: монеты в банке