Упражнение - Панель управления кнопками и динамическими меню
Существует несколько способов предоставления входных данных. Входные данные активируют определенные события и выполняют некоторые изменения. Компоненты пользовательского интерфейса помогают пользователям взаимодействовать с голограммами на сцене.
Создание статической панели кнопок
В окне «Иерархия» щелкните правой кнопкой мыши на объекте RoverExplorer и выберите «Создать пустой», чтобы добавить пустой объект как дочерний к RoverExplorer. Назовите объект Buttonsи настройте компонент Transform следующим образом:
- положение: X = -0,6, Y = 0,036, Z = -0,5
- вращение: X = 90, Y = 0, Z = 0
- масштаб: X = 1, Y = 1, Z = 1
В окне проекта перейдите к Assets>MRTK.Tutorials.GettingStarted>Prefabs папке, щелкните и перетащите префаб PressableCylinderButton на объект Buttons, затем щелкните правой кнопкой мыши на PressableCylinderButton и выберите Дублировать, чтобы создать копию, повторяйте, пока у вас не будет всего три объекта PressableCylinderButton в Buttons.
В окне появится запрос на импорт TextMesh Pro. Выберите первый вариант импорта TMP Essentials.
В области иерархии выберите объект кнопки, а затем в области инспектора выберите Добавить компонент, чтобы добавить компонент панели объектов. Настройте его следующим образом:
- Направление потока панели объектов: горизонтальное
- интервал между: X = 0,2, Y = 0
Назначьте каждый объект под Кнопки в список объектов панели объектов на компоненте панели объектов .
В области иерархии назовите кнопки Подсказки, Взорватьи Сбросить. Для каждой кнопки измените свойство SpeechRecognitionKeyword в разделе Advanced StatefulInteractable Settings в компоненте нажимаемая кнопка так, чтобы оно соответствовало названиям кнопок::
На панели иерархии выберите объект кнопки подсказки, а затем в окне инспектора настройте событие PressableButton.OnClicked() следующим образом:
- Назначьте объект RoverAssembly поле None (Object)
- В раскрывающемся списке No Function выберите PlacementHintsController>TogglePlacementHints (), чтобы задать эту функцию в качестве действия, выполняемого при активации события.
В области иерархии выберите объект кнопки Взрыва, а затем в окне Инспектора настройте событие PressableButton.OnClicked () следующим образом:
- Назначьте объект RoverAssembly поле None (Object)
- В раскрывающемся списке Нет функции выберите ExplodedViewController>ToggleExplodedView(), чтобы задать эту функцию в качестве действия, выполняемого при активации события.
Нажмите кнопку "Воспроизвести", чтобы ввести режим игры. Нажмите и удерживайте пробел, чтобы активировать руку и использовать мышь, чтобы нажать кнопку Подсказки, чтобы переключить видимость объектов подсказки размещения:
кнопка "Взрыв", переключит взрывное представление включено и выключено:
Далее в модуле мы реализуем кнопку сброса .
Создание динамического меню, которое следует пользователю
В области "Проект" перейдите к папке пакеты>MRTK UX компоненты>Near Menu, щелкните и перетащите префаб NearMenuBase в окно иерархии, задайте для параметра Преобразование Положение X = 0, Y = -0,4, Z = 0 и настройте его следующим образом:
- Убедитесь, что компонент SolverHandler имеет отслеживаемый целевой тип Tracked Target Type, установленный на Head
- Установите флажок рядом с компонентом RadialView Solver, чтобы он был включён по умолчанию.
В окне иерархии переименуйте объект в Меню, а затем разверните дочерний объект MenuContent-HorizontalLayout (Меню и Закрепить) > Buttons-GridLayout (Кнопки), чтобы отобразить три кнопки:
Переименуйте первую кнопку в Buttons-GridLayout (Кнопки) в Индикатор, а затем в окне иерархии настройте игровой объект Индикатор следующим образом:
- Выберите объект Frontplate > AnimatedContent > Icon > Label и измените компонент TextMesh Pro так, чтобы он соответствовал имени кнопки. Убедитесь, что объект Label активирован в иерархии
- Настройте событие PressableButton.OnClicked(), назначив объект индикатора, который выглядит как шеврон, в поле None (Object) и выберите GameObject > SetActive (bool) в раскрывающемся списке No Function (убедитесь, что флажок аргумента установлен установлен)
- Выберите объект Frontplate > AnimatedContent > Icon > UIButtonFontIcon и измените значок на значок поиска в компоненте выбора иконки шрифта. Это можно найти в списке значков или задать имя текущего значка значение "Значок 130".
Чтобы отключить объект индикатора шеврона, в области иерархии выберите объект индикатора, имеющий вид шеврона, а затем в области инспектора:
- Снимите флажок рядом с его именем, чтобы сделать его неактивным по умолчанию
- Нажмите кнопку "Добавить компонент", чтобы добавить компонент контроллера указателя направления (скрипт)
Переименуйте вторую кнопку в TapToPlace, а затем в окне иерархии настройте объект игры TapToPlace следующим образом:
- Выберите объект Frontplate > AnimatedContent > Icon > Label и измените компонент TextMesh Pro так, чтобы он соответствовал имени кнопки. Убедитесь, что объект Label активирован в иерархии
- Настройте событие PressableButton.OnClicked(), назначив объект RoverExplorer >RoverAssembly в поле None (Object) и выбрав TapToPlace>в логическом поле Enabled из выпадающего списка "Нет функции" (убедитесь, что флажок аргумента установлен).
- Выберите объект Frontplate > AnimatedContent > Icon > UIButtonFontIcon и измените значок на значок руки в компоненте Font Icon Selector. Это можно найти в списке иконок или задать имя текущей иконки как 'Иконка 13'.
В окне "Иерархия" выберите объект RoverAssembly, а затем в окне Инспектора настройте компонент Tap To Place (Скрипт).
- Снимите флажок рядом с его именем, чтобы сделать его неактивным по умолчанию
- В разделе Постановка остановленных событий () выберите значок +, чтобы добавить новое событие.
- Назначьте в поле None (Object) объект RoverExplorer>RoverAssembly
- В раскрывающемся списке No Function выберите TapToPlace>bool Enabled, чтобы обновить это значение свойства при активации события.
- Убедитесь, что флажок аргумента снят