Упражнение. Панель кнопок и динамические меню
Существует несколько способов ввода данных. Входные данные активируют определенные события и выполняют некоторые изменения. Компоненты пользовательского интерфейса помогают пользователям взаимодействовать с голограммами на сцене.
Создание статической панели кнопок
В окне Иерархия щелкните правой кнопкой мыши объект RoverExplorer и выберите Create Empty (Создать пустой), чтобы добавить пустой объект в качестве дочернего объекта RoverExplorer. Назовите объект Buttons и настройте компонент Transform (Преобразование) следующим образом:
- Позиция: X = -0,6, Y = 0,036, Z = -0,5
- Поворот: X = 90, Y = 0, Z = 0
- Масштаб: X = 1, Y = 1, Z = 1
В окне "Проект" перейдите в раздел "Активы>MRTK". Tutorials.GettingStarted>Prefabs folder, click-and-drag the PressableCylinderButton prefab to the Button object, а затем щелкните правой кнопкой мыши элемент PressableCylinderButton и выберите "Дублировать ", чтобы создать копию, повторяйте, пока не будете в общей сложности три объекта PressableCylinderButton под кнопками:
В окне появится запрос на импорт TextMesh Pro. Выберите первый вариант импорта TMP Essentials.
В области иерархии выберите объект Button , а затем в области инспектора выберите "Добавить компонент ", чтобы добавить компонент панели объектов. Настройте его следующим образом.
- Направление потока панели объектов: горизонтальное
- Интервал между: X = 0,2, Y = 0
Назначьте каждый объект в разделе "Кнопки " списку объектов панели объектов в компоненте панели объектов:
В области Hierarchy назовите кнопки Hints, Explode и Reset. Для каждой кнопки измените свойство SpeechRecognitionKeyword в разделе Advanced StatefulInteractable Параметры в компоненте "Нажимаемая кнопка", чтобы соответствовать именам кнопок::
В области иерархии выберите объект кнопки "Подсказки" , а затем в окне инспектора настройте событие PressableButton.OnClicked () следующим образом:
- В поле None (Object) (Отсутствует (объект)) укажите объект RoverAssembly.
- В раскрывающемся списке No Function (Нет функции) выберите PlacementHintsController>TogglePlacementHints (), чтобы задать эту функцию в качестве действия, выполняемого при срабатывании события.
В области иерархии выберите объект кнопки "Взрыв ", а затем в окне инспектора настройте событие PressableButton.OnClicked () следующим образом:
- В поле None (Object) (Отсутствует (объект)) укажите объект RoverAssembly.
- В раскрывающемся списке "Нет функции" выберите "ВзорвалсяViewController>ToggleExplodedView(", чтобы задать эту функцию в качестве действия, выполняемого при активации события
Нажмите кнопку Play (Играть), чтобы перейти в игровой режим. Нажмите и удерживайте клавишу ПРОБЕЛ, чтобы активировать руку, и с помощью мыши нажмите кнопку Hints, чтобы включить видимость размещения объектов подсказок.
Кнопка Explode позволяет включать и отключать развернутое представление.
Мы реализуем кнопку сброса позже в модуле.
Создание динамического меню, которое следует за пользователем
В области "Проект" перейдите к папке "Компоненты>>пользовательского интерфейса MRTK MRTK рядом с меню", щелкните и перетащите предварительное поле NearMenuBase в окно иерархии, задайте для параметра "Позиция преобразования" значение X = 0, Y = -0.4, Z = 0 и настройте его следующим образом:
- Убедитесь, что для параметра Tracked Target Type (Тип отслеживаемой цели) компонента SolverHandler указано значение Head (Головной).
- Установите флажок рядом с компонентом поиска решения RadialView, чтобы он был включен по умолчанию.
В окне иерархии переименуйте объект в Menu, а затем разверните дочерний объект MenuContent-HorizontalLayout (Menu и Pin) > Button-GridLayout (Button), чтобы отобразить три кнопки:
Переименуйте первую кнопку в Button-GridLayout (Button) на индикатор, а затем в окне иерархии настройте объект игры индикатора следующим образом:
- Выберите объект Frontplate > AnimatedContent > Icon > Label и измените компонент TextMesh Pro, чтобы он соответствовал имени кнопки. Убедитесь, что объект Label активирован в иерархии
- Настройте событие PressableButton.OnClicked(), назначив объект Индикатора, который выглядит как шеврон, в поле None (Object) и выбрав GameObject > SetActive (bool) в раскрывающемся списке "Нет функции" (убедитесь, что аргумент проверка box проверка)
- Выберите объект UIButtonFonton frontplate > AnimatedContent > Icon > и измените значок поиска на компонент селектора значка шрифта. Это можно найти в списке значков или задать для текущего имени значка значение "Значок 130".
Чтобы отключить объект шеврона Indicator, в области Hierarchy выберите объект Indicator, который выглядит как шеврон, а затем в области Inspector выполните следующие действия.
- Снимите флажок рядом с именем, чтобы сделать его неактивным по умолчанию
- Добавьте компонент Directional Indicator Controller (Script) (Контроллер индикатора направления (скрипт)) с помощью кнопки Add Component (Добавить компонент).
Переименуйте вторую кнопку на TapToPlace, а затем в окне иерархии настройте объект игры TapToPlace следующим образом:
- Выберите объект Frontplate > AnimatedContent > Icon > Label и измените компонент TextMesh Pro, чтобы он соответствовал имени кнопки. Убедитесь, что объект Label активирован в иерархии
- Настройте событие PressableButton.OnClicked(), назначив объект Rover Обозреватель> RoverAssembly полю None (Object) и выбрав элемент TapToPlace>bool Enabled из раскрывающегося списка "Нет функции" (убедитесь, что аргумент проверка box проверка)
- Выберите объект UIButtonFontent Frontplate > AnimatedContent> и > измените значок руки на компонент селектора значка шрифта. Это можно найти в списке значков или задать для текущего имени значка значение "Значок 13".
В окне Hierarchy (Иерархия) выберите объект RoverAssembly, затем в окне Inspector (Инспектор) настройте компонент Tap To Place (Script) (Размещение касанием — скрипт), как описано ниже.
- Снимите флажок рядом с его именем, чтобы сделать его неактивным по умолчанию.
- В разделе события On Placing Stopped () щелкните значок "+", чтобы добавить новое событие:
- Назначьте объект RoverExplorer>RoverAssembly полю None (Object).
- В раскрывающемся списке Нет функции выберите TapToPlace>bool Enabled, чтобы изменить значение этого свойства при активации события.
- Убедитесь, что флажок аргумента снят.