Упражнение - Панель управления кнопками и динамическими меню

Завершено

Существует несколько способов предоставления входных данных. Входные данные активируют определенные события и выполняют некоторые изменения. Компоненты пользовательского интерфейса помогают пользователям взаимодействовать с голограммами на сцене.

Создание статической панели кнопок

  1. В окне «Иерархия» щелкните правой кнопкой мыши на объекте 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

    снимок экрана Unity с выбранным и размещенным объектом Buttons.

  2. В окне проекта перейдите к Assets>MRTK.Tutorials.GettingStarted>Prefabs папке, щелкните и перетащите префаб PressableCylinderButton на объект Buttons, затем щелкните правой кнопкой мыши на PressableCylinderButton и выберите Дублировать, чтобы создать копию, повторяйте, пока у вас не будет всего три объекта PressableCylinderButton в Buttons.

    скриншот Unity с недавно добавленными префабами PressableRoundButton.

    В окне появится запрос на импорт TextMesh Pro. Выберите первый вариант импорта TMP Essentials.

  3. В области иерархии выберите объект кнопки, а затем в области инспектора выберите Добавить компонент, чтобы добавить компонент панели объектов. Настройте его следующим образом:

    • Направление потока панели объектов: горизонтальное
    • интервал между: X = 0,2, Y = 0

    Назначьте каждый объект под Кнопки в список объектов панели объектов на компоненте панели объектов .

    Снимок экрана объекта

  4. В области иерархии назовите кнопки Подсказки, Взорватьи Сбросить. Для каждой кнопки измените свойство SpeechRecognitionKeyword в разделе Advanced StatefulInteractable Settings в компоненте нажимаемая кнопка так, чтобы оно соответствовало названиям кнопок::

    снимок экрана с настроенными текстовыми метками кнопки.

  5. На панели иерархии выберите объект кнопки подсказки, а затем в окне инспектора настройте событие PressableButton.OnClicked() следующим образом:

    • Назначьте объект RoverAssembly поле None (Object)
    • В раскрывающемся списке No Function выберите PlacementHintsController>TogglePlacementHints (), чтобы задать эту функцию в качестве действия, выполняемого при активации события.

    снимок экрана объекта кнопки

  6. В области иерархии выберите объект кнопки Взрыва, а затем в окне Инспектора настройте событие PressableButton.OnClicked () следующим образом:

    • Назначьте объект RoverAssembly поле None (Object)
    • В раскрывающемся списке Нет функции выберите ExplodedViewController>ToggleExplodedView(), чтобы задать эту функцию в качестве действия, выполняемого при активации события.

    снимок экрана Unity с настроенным событием OnClick для объекта кнопки

  7. Нажмите кнопку "Воспроизвести", чтобы ввести режим игры. Нажмите и удерживайте пробел, чтобы активировать руку и использовать мышь, чтобы нажать кнопку Подсказки, чтобы переключить видимость объектов подсказки размещения:

    снимок экрана режима разделения режима Unity Play с нажатием кнопки

  8. кнопка "Взрыв", переключит взрывное представление включено и выключено:

    снимок экрана режима разделения режима Unity Play с нажатием кнопки

    Далее в модуле мы реализуем кнопку сброса .

Создание динамического меню, которое следует пользователю

  1. В области "Проект" перейдите к папке пакеты>MRTK UX компоненты>Near Menu, щелкните и перетащите префаб NearMenuBase в окно иерархии, задайте для параметра Преобразование Положение X = 0, Y = -0,4, Z = 0 и настройте его следующим образом:

    • Убедитесь, что компонент SolverHandler имеет отслеживаемый целевой тип Tracked Target Type, установленный на Head
    • Установите флажок рядом с компонентом RadialView Solver, чтобы он был включён по умолчанию.

    снимок экрана Unity с выбранным недавно добавленным префабом меню.

  2. В окне иерархии переименуйте объект в Меню, а затем разверните дочерний объект MenuContent-HorizontalLayout (Меню и Закрепить) > Buttons-GridLayout (Кнопки), чтобы отобразить три кнопки:

    снимок экрана Unity с выбранным объектом Меню и развернутым объектом ButtonCollection.

  3. Переименуйте первую кнопку в Buttons-GridLayout (Кнопки) в Индикатор, а затем в окне иерархии настройте игровой объект Индикатор следующим образом:

    • Выберите объект Frontplate > AnimatedContent > Icon > Label и измените компонент TextMesh Pro так, чтобы он соответствовал имени кнопки. Убедитесь, что объект Label активирован в иерархии
    • Настройте событие PressableButton.OnClicked(), назначив объект индикатора, который выглядит как шеврон, в поле None (Object) и выберите GameObject > SetActive (bool) в раскрывающемся списке No Function (убедитесь, что флажок аргумента установлен установлен)
    • Выберите объект Frontplate > AnimatedContent > Icon > UIButtonFontIcon и измените значок на значок поиска в компоненте выбора иконки шрифта. Это можно найти в списке значков или задать имя текущего значка значение "Значок 130".

    снимок экрана Unity с настроенным объектом

  4. Чтобы отключить объект индикатора шеврона, в области иерархии выберите объект индикатора, имеющий вид шеврона, а затем в области инспектора:

    • Снимите флажок рядом с его именем, чтобы сделать его неактивным по умолчанию
    • Нажмите кнопку "Добавить компонент", чтобы добавить компонент контроллера указателя направления (скрипт)

    скриншот Unity с выбранным, отключенным объектом и добавленным компонентом DirectionalIndicatorController.

  5. Переименуйте вторую кнопку в 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'.

    снимок экрана Unity с объектом кнопки TapToPlace и настроенным конфигуратором кнопок.

  6. В окне "Иерархия" выберите объект RoverAssembly, а затем в окне Инспектора настройте компонент Tap To Place (Скрипт).

    • Снимите флажок рядом с его именем, чтобы сделать его неактивным по умолчанию
    • В разделе Постановка остановленных событий () выберите значок +, чтобы добавить новое событие.
    • Назначьте в поле None (Object) объект RoverExplorer>RoverAssembly
    • В раскрывающемся списке No Function выберите TapToPlace>bool Enabled, чтобы обновить это значение свойства при активации события.
    • Убедитесь, что флажок аргумента снят

    снимок экрана Unity с перенастройкой компонента TapToPlace.