Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Unity_в_действии_Джозеф_Хокинг_Рус.pdf
Скачиваний:
83
Добавлен:
21.06.2022
Размер:
26.33 Mб
Скачать

6.3. Программирование интерактивного UI      153

Листинг 6.5. Добавление в сценарий UIController возможности работы с окном

...

[SerializeField] private SettingsPopup settingsPopup; void Start() {

settingsPopup.Close(); ¬ Закрываем всплывающее окно в момент начала игры.

}

...

public void OnOpenSettings() {

settingsPopup.Open(); ¬ Заменяем отладочный текст методом всплывающего окна.

}

...

Этот код добавляет ячейку для всплывающего окна, поэтому свяжите это окно с объектом UIController. После этого оно начнет закрываться в начале игры и открываться при щелчке на кнопке настроек.

Но пока у нас нет способа закрыть его вручную, значит, нужно добавить соответствующую кнопку. Последовательность действий будет практически такой же, как при создании предыдущей кнопки: выберите в меню GameObject команду UI Button, поместите новую кнопку в верхний правый угол всплывающего окна, перетащите спрайт close на ячейку Source Image данного UI-элемента и щелкните на кнопке Set Native Size, чтобы изображение приобрело нужный размер. Но в отличие от предыдущего случая нам требуется текстовая подпись, поэтому выделите дочерний компонент text и введите в текстовое поле слово Close, сделав его цвет белым. На вкладке Hierarchy перетащите эту кнопку на всплывающее окно, чтобы сформировать иерархическую связь. В качестве заключительного штриха присвойте параметру Fade Duration значение 0.01 и сделайте чуть темнее параметр Normal Color, присвоив ему значения 110, 110, 110, 255.

Чтобы кнопка начала закрывать окно, ей нужно сопоставить событие OnClick; щелкните на кнопке со значком + (плюс) поля OnClick, перетащите всплывающее окно на ячейку объекта и выберите в списке функций вариант Close(). Запустите игру и убедитесь, что созданная кнопка позволяет закрыть всплывающее окно.

Итак, мы добавили к нашему проекционному дисплею всплывающее окно. Но пока оно пустое, то есть нам нужно вставить в него элементы управления. Именно этим мы и займемся в следующем разделе.

6.3.3. Задание значений с помощью ползунка и поля ввода

Процедура добавления элементов управления к всплывающему окну настроек состоит из двух этапов, почти как уже знакомая вам процедура создания кнопок. Вы генерируете присоединенные к холсту элементы UI и связываете их со сценарием. Нам нужен ползунок, текстовое поле и текстовая подпись к ползунку. Выберите в меню GameObject команду UI Text, чтобы создать текстовый объект, затем — команду UI InputField, чтобы создать текстовое поле, а потом — команду UI Slider для создания ползунка (рис. 6.16).

Сделайте все три объекта потомками всплывающего окна путем их перетаскивания на вкладке Hierarchy, а затем расположите их в соответствии с рисунком, выровняв по центрувсплывающегоокна.ПрисвойтетекстовомуэлементузначениеSpeed,сформировав

154      Глава 6. Двухмерный GUI для трехмерной игры

Э а

 

а

К а •а

а:

а а а

 

, а

InputField

а €

‚ƒ

а а •

Slider

 

Рис. 6.16. Элементы управления вводом, добавленные к всплывающему окну

подпись к ползунку. Поле предназначено для ввода текста, и по умолчанию, пока игрок ничего не ввел, там отображается слово Text; замените его словом Name. Параметрам Content Type и Line Type можно оставить значения, предлагаемые по умолчанию. Впрочем, вы можете ограничить вводимую информацию только буквами или только целыми числами, изменив параметр Content Type, и разрешить ввод нескольких строк с помощью параметра Line Type.

ВНИМАНИЕ  Вы не сможете пользоваться ползунком, если его перекрывает текстовая подпись. Сделайте так, чтобы на вкладке Hierarchy текстовый объект располагался над ползунком, что обеспечит расположение ползунка поверх подписи.

Параметры ползунка вы найдете в нижней части панели Inspector. Минимальное значение задает параметр Min Value, по умолчанию равный 0; его мы менять не будем. Параметр же Max Value по умолчанию имеет значение 1, но в нашем примере мы присвоим ему значение 2. Параметрам Value и Whole Numbers оставим значения, предлагаемые по умолчанию; первый устанавливает начальное положение ползунка, а второй ограничивает допустимые значения целыми числами (в данном случае такое ограничение не требуется).

Итак, мы задали параметры всех объектов, осталось написать код, управляющий их поведением; добавьте в сценарий SettingsPopup.cs методы из следующего лис­ тинга.

Листинг 6.6. Методы для элементов управления вводом всплывающего окна

...

public void OnSubmitName(string name) { ¬ Debug.Log(name);

}

public void OnSpeedValue(float speed) { ¬ Debug.Log("Speed: " + speed);

}

...

Этот метод срабатывает в момент начала ввода данных в текстовое поле.

Этот метод срабатывает при изменении положения ползунка.

Замечательно. Наши элементы управления обзавелись методами. Среди настроек поля ввода появилось поле End Edit; перечисленные в этом поле события наступают после завершения пользовательского ввода. Добавьте к этому полю элемент, щелкнув на кнопке со значком + (плюс), перетащите всплывающее окно на ячейку для объекта и выберите в списке функций вариант OnSubmitName().