Упражнение. Панель кнопок и динамические меню

Завершено

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

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

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

    Screenshot of Unity with newly created Buttons object selected and positioned.

  2. В окне "Проект" перейдите в раздел "Активы>MRTK". Tutorials.GettingStarted>Prefabs folder, click-and-drag the PressableCylinderButton prefab to the Button object, а затем щелкните правой кнопкой мыши элемент PressableCylinderButton и выберите "Дублировать ", чтобы создать копию, повторяйте, пока не будете в общей сложности три объекта PressableCylinderButton под кнопками:

    Screenshot of Unity with newly added PressableRoundButton prefabs.

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

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

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

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

    Screenshot of Unity Buttons object with GridObjectCollection component added, configured, and applied.

  4. В области Hierarchy назовите кнопки Hints, Explode и Reset. Для каждой кнопки измените свойство SpeechRecognitionKeyword в разделе Advanced StatefulInteractable Параметры в компоненте "Нажимаемая кнопка", чтобы соответствовать именам кнопок::

    Screenshot showing button text labels configured.

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

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

    Screenshot of Hints button object OnClick event configured.

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

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

    Screenshot of Unity with Explode button object OnClick event configured.

  7. Нажмите кнопку Play (Играть), чтобы перейти в игровой режим. Нажмите и удерживайте клавишу ПРОБЕЛ, чтобы активировать руку, и с помощью мыши нажмите кнопку Hints, чтобы включить видимость размещения объектов подсказок.

    Screenshot of Unity Play mode split view with Hints button being pressed.

  8. Кнопка Explode позволяет включать и отключать развернутое представление.

    Screenshot of Unity Play mode split view with Explode button being pressed.

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

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

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

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

    Screenshot of Unity with newly added near menu prefab selected.

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

    Screenshot of Unity with Menu object selected and ButtonCollection object expanded.

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

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

    Screenshot of Unity with Indicator button object Button Config Helper configured.

  4. Чтобы отключить объект шеврона Indicator, в области Hierarchy выберите объект Indicator, который выглядит как шеврон, а затем в области Inspector выполните следующие действия.

    • Снимите флажок рядом с именем, чтобы сделать его неактивным по умолчанию
    • Добавьте компонент Directional Indicator Controller (Script) (Контроллер индикатора направления (скрипт)) с помощью кнопки Add Component (Добавить компонент).

    Screenshot of Unity with Indicator object selected, disabled, and DirectionalIndicatorController component added.

  5. Переименуйте вторую кнопку на TapToPlace, а затем в окне иерархии настройте объект игры TapToPlace следующим образом:

    • Выберите объект Frontplate > AnimatedContent > Icon > Label и измените компонент TextMesh Pro, чтобы он соответствовал имени кнопки. Убедитесь, что объект Label активирован в иерархии
    • Настройте событие PressableButton.OnClicked(), назначив объект Rover Обозреватель> RoverAssembly полю None (Object) и выбрав элемент TapToPlace>bool Enabled из раскрывающегося списка "Нет функции" (убедитесь, что аргумент проверка box проверка)
    • Выберите объект UIButtonFontent Frontplate > AnimatedContent> и > измените значок руки на компонент селектора значка шрифта. Это можно найти в списке значков или задать для текущего имени значка значение "Значок 13".

    Screenshot of Unity with TapToPlace button object Button Config Helper configured.

  6. В окне Hierarchy (Иерархия) выберите объект RoverAssembly, затем в окне Inspector (Инспектор) настройте компонент Tap To Place (Script) (Размещение касанием — скрипт), как описано ниже.

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

    Screenshot of Unity with TapToPlace component reconfigured.