Действия ввода
Обновлено: 10 ноя 2025 г.
Действия ввода используются для запроса у устройств, таких как стилус или контроллер, определенных значений ввода, например, величины сжимаемого захвата, нажатия кнопки, положения устройства или для запуска тактильной обратной связи. Прежде чем обращаться к ним с помощью скриптов, эти действия необходимо настроить в меню Input Actions. Определения действий соответствуют спецификации Open XR Action.
После знакомства с этим руководством вы сможете:
- получать позы определенных устройств;
- получать состояния кнопок, сенсорных панелей и курков;
- определять, какие устройства подключены;
- инициировать тактильную обратную связь.
Действия ввода используются для добавления поддержки некоторых новых контроллеров и устройств. Рекомендуемый способ использования действий ввода в Unity — получить пакет SDK от разработчика конкретного устройства, которое вы хотите интегрировать.
Не все контроллеры поддерживаются гарнитурами Meta. Проверьте, поддерживается ли ваше конкретное устройство, прежде чем пытаться получить к нему доступ с помощью Input Actions.
Предварительные требования
Действия ввода определяются в меню Input Actions (Действия ввода), доступном в окне Настройка проекта в Unity: Редактировать > Настройки проекта... > Meta XR > Действия ввода).
Возможно, используемое вами устройство поставляется с SDK или примером, включающим в себя "Набор действий ввода", который уже содержит соответствующие определения действий. Вы можете связать этот актив набора действий ввода в области "Наборы действий ввода" меню "Действия ввода".
Если у вас нет набора действий ввода, вы можете создать свой собственный список поддерживаемых действий в списке "Определения действий ввода".
Определения действий ввода включают в себя:
- Профиль взаимодействия: эта строка определяет, с каким устройством должны использоваться действия, например, /interaction_profiles/oculus/touch_controller — профиль взаимодействия для сенсорного контроллера Meta.
Каждое новое действие должно содержать:
- имя действия — имя, используемое для идентификации действия в коде, например "Совет", "Ускорение", "Кнопка вперед".
- тип действия — значения какого типа возвращает это действие? Действия также могут быть использованы для запуска тактильной обратной связи с помощью типа действия "Вибрация".
- Пути действия: определяют, какой вход на устройстве должно возвращать это действие. Например, /user/hand/left/input/a/click указывает, что это действие должно выдавать значение true, если нажата кнопка A.
Для запроса определенных действий можно использовать одну из нескольких функций
OVRPlugin. Эти функции выдают либо значение true в случае успешного выполнения функции, либо false, если возникла ошибка, например недопустимое имя действия или неподдерживаемый путь.
bool GetActionStateBoolean(string actionName, ref bool result);
bool GetActionStatePose(string actionName, OVRPlugin.Hand hand, ref Posef pose);
bool GetActionStateFloat(string actionName, ref float result);
bool TriggerVibrationAction(string actionName, OVRPlugin.Hand hand, float duration, float amplitude);
Вы можете определить, какое устройство подключено, запустив новую функцию в OVRPlugin:
string GetCurrentInteractionProfile(OVRPlugin.Hand hand);
Это вернет профиль взаимодействия устройства, которое в данный момент находится в указанной руке, позволяя определить, находится ли это устройство в руке или нет. Обратите внимание: устройства могут выполнять несколько различных профилей взаимодействия и могут вернуться к использованию одного из них, поддерживаемого вашим приложением, даже если они не являются именно этим устройством. Например, сенсорный про-контроллер может быть привязан к профилю взаимодействия сенсорного контроллера, если приложение специально не поддерживает сенсорные про-контроллеры. Это может расширить диапазон устройств, которые может поддерживать ваше приложение, но также может привести к непредвиденному развитию событий.
Тактильная обратная связь
Действия ввода также могут быть использованы для запуска тактильного отклика. С помощью опции OVRPlugin.TriggerVibrationAction вы можете заставить соответствующее устройство вибрировать.
- Продолжительность — продолжительность вибрации в секундах.
- Амплитуда — это интенсивность вибрации, нормированная в диапазоне 0–1.
Одна из распространенных причин ошибок при использовании действий ввода — привязка к неправильным или неподдерживаемым путям. Если вы обнаружили, что не можете получить результаты для действий, проверьте, что введенные вами пути точно совпадают с путями, соответствующими спецификации Open XR для вашего устройства. Если вы работаете на Android, возможно, вы сможете найти больше информации о конкретных ошибках через Logcat.
Не каждое устройство можно использовать с действиями ввода. В настоящее время поддерживаются только контроллеры Meta от первых производителей или стилус MX Ink.
Неподдерживаемые контроллеры
Неподдерживаемые контроллеры могут связываться с несколькими различными профилями взаимодействия, и доступ к ним по-прежнему может реализовываться путем создания определений действий ввода для более широко поддерживаемого профиля взаимодействия. Например, если в приложении не были специально созданы действия ввода для профиля взаимодействия MX Ink, стилус будет восприниматься приложением как сенсорный контроллер и использовать профиль взаимодействия с сенсорным контроллером. Используя этот метод, вы сможете получить поддержку устройств, не поддерживаемых системой в явном виде.
Дополнительная информация
Теперь, когда вы знаете, как определять и запрашивать действия ввода, по следующим ссылкам вы можете подробнее узнать о действиях.
Руководства по проектированию
- Модальности ввода. Узнайте о различных модальностях ввода.
- Голова. Узнайте о принципах проектирования и рекомендациях по созданию интерфейса для ввода с помощью головы.
- Руки. Узнайте о принципах проектирования и рекомендациях по созданию интерфейса для использования рук.
- Контроллеры. Узнайте о принципах проектирования и рекомендациях по созданию интерфейса для использования контроллеров.
- Голос. Узнайте о принципах проектирования и рекомендациях по созданию интерфейса для голосового взаимодействия.
- Периферийные устройства. Узнайте о принципах проектирования и рекомендациях по созданию интерфейса для работы с периферийными устройствами.