5. Добавление кнопки и сброс расположений фигур

В предыдущем руководстве мы добавили субъекты взаимодействия с рукой к компонентам Pawn и Manipulator на шахматной доске, чтобы сделать оба эти компонента интерактивными. В этом разделе показано, как с помощью подключаемого модуля Mixed Reality Toolkit UX Tools можно создать приложение для игры в шахматы с новыми функциями и ссылками на субъекты в схемах. К концу раздела у вас все будет готово к упаковке приложения смешанной реальности и его развертыванию на устройстве или эмуляторе.

Задачи

  • Добавление интерактивной кнопки.
  • Создание функции для сброса расположения фигуры.
  • Подключение кнопки к триггеру, чтобы ее нажатие активировало созданную функцию.

Создание функции сброса

Первым делом необходимо создать схему функции, которая сбрасывает расположение фигуры, возвращая ее на исходное место в сцене.

  1. Откройте WhiteKing, щелкните значок + рядом с разделом Functions (Функции) на панели My Blueprint (Моя схема) и присвойте имя Reset Location (Сбросить расположение).

  2. Перетащите закрепление выполнения из функции Reset Location в произвольное место сетки схемы, чтобы создать узел SetActorRelativeTransform.

    • Эта функция задает для субъекта преобразование (расположение, поворот и масштабирование) относительно родительского элемента. С помощью этой функции мы можем вернуть короля на доске в исходное место, даже если сама доска была перемещена.
  3. Щелкните правой кнопкой мыши внутри графа событий, выберите Make Transform (Создать преобразование) и задайте для параметра Location (Расположение) значения X = -26, Y = 4 и Z = 0.

    • Соедините закрепление Return Value (Возвращаемое значение) с закреплением New Relative Transform (Новое относительное преобразование) элемента SetActorRelativeTransform.

Reset Location function

Скомпилируйте (Compile) и сохраните (Save) проект, после чего вернитесь в главное окно.

Добавление кнопки

Теперь, когда функция настроена, следующая задача — создать кнопку, при нажатии которой функция будет выполняться.

  1. Щелкните Add New > Blueprint Class (Добавить > Класс схемы), разверните раздел All Classes (Все классы) и введите UxtPressableButtonActor для поиска.
    • Присвойте созданной кнопке имя ResetButton и дважды щелкните ее, чтобы открыть соответствующую схему.

Subclass the new Blueprint from the HoloLens 2 style button

  1. Убедитесь, что параметр ResetButton(self) выбран в области Components (Компоненты). В области Details (Сведения) перейдите к разделу Button (Кнопка). Укажите для параметра Button Label (Метка кнопки) значение Reset (Сбросить), разверните раздел Button Icon Brush (Кисть значка с кнопкой) и нажмите кнопку Open Icon Brush Editor (Открыть редактор кисти значка).

Set the label and icon on the button

Откроется редактор кисти значка, где можно выбрать новый значок для кнопки.

Select an icon for the button

Доступно множество параметров, с помощью которых можно настроить кнопку. Дополнительные сведения о компоненте нажимаемой кнопки UXT см. в документации.

  1. В области Components (Компоненты) щелкните ButtonComponent (Inherited) и прокрутите панель Details (Сведения) до раздела Events (События).
    • Нажмите зеленую кнопку + рядом с элементом По нажатию кнопки, чтобы добавить событие в граф событий для инициирования при нажатии кнопки.

Из этого события мы будем вызывать функцию Reset Location (Сброс расположения) элемента WhiteKing, для чего требуется ссылка на субъект WhiteKing на данном уровне.

  1. На панели My Blueprint (Моя схема) перейдите к разделу Variables (Переменные), нажмите кнопку + и присвойте переменной имя WhiteKing.
    • На панели Details (Сведения) щелкните раскрывающийся список рядом с полем Variable Type (Тип переменной), затем выполните поиск по слову WhiteKing и выберите Object Reference (Ссылка на объект).
    • Установите флажок Instance Editable (Редактируемый экземпляр), который позволяет задать переменную на уровне Main.

Create a variable

  1. Перетащите переменную WhiteKing из раздела My Blueprint > Variables (Моя схема > Переменные) на граф Reset Button Event Graph (Граф событий кнопки сброса) и выберите Get WhiteKing (Получить WhiteKing).

Вызов функции

Теперь осталось сделать так, чтобы при нажатии нашей кнопки вызывалась функция сброса.

  1. Перетащите закрепление вывода WhiteKing и отпустите его для размещения нового узла. Выберите функцию Reset Location (Сброс расположения). Наконец, перетащите выходное закрепление выполнения из события On Button Pressed (По нажатию кнопки) к входному закреплению выполнения функции Reset Location (Сброс расположения). Скомпилируйте и сохраните схему ResetButton, а затем вернитесь в главное окно.

Call Reset Location function from On Button Pressed

  1. Перетащите элемент ResetButton в окно просмотра и задайте для него следующее расположение: X = 50, Y = -25, Z = 10. Задает вращение до Z = 180. В разделе Default (По умолчанию) задайте для переменной WhiteKing значение WhiteKing.

Set the variable

Запустите приложение, переместите фигуру, а затем нажмите кнопку в стиле HoloLens 2 — вы увидите, как работает логика сброса расположения.

Теперь у вас есть приложение смешанной реальности с интерактивной фигурой и доской, а также работающая кнопка для сброса расположения этой фигуры. Законченное приложение в том объеме, в котором оно реализовано к данному моменту, вы найдете в репозитории GitHub. Вы можете не ограничиваться примерами из этого руководства и настроить остальные шахматные фигуры так, чтобы при нажатии этой кнопки вся доска принимала исходный вид.

End scene in viewport

Теперь вы можете переходить к последнему разделу, в котором показано, как упаковать приложение и развернуть его на устройстве или в эмуляторе.

Важно!

На этом этапе вам необходимо внести изменения в проект с использованием рекомендуемых параметров производительности для Unreal , прежде чем вы развернете приложение на устройстве или в эмуляторе.

Следующий раздел: 6. Упаковка и развертывание на устройстве или в эмуляторе