#mrtk
#mrtk
Вопрос:
При преобразовании некоторого кода в новый MRTK RC1 я распознал две версии, например, событий Up и Down, как для ввода, так и для указателя. Теперь мне было интересно, в чем разница? Почему это различие? Нужно ли мне реализовать оба, если я хочу, чтобы одно и то же приложение работало на рабочем столе (мышь использует версию ввода) и на устройствах XR (версия указателя)?
Ответ №1:
Отличный вопрос! Мое понимание разницы между InputUp / Down и PointerUp / Down заключается в том, откуда берутся события. Короче говоря, я бы рекомендовал прослушивать события указателя вместо необработанных входных событий. Вам не нужно прослушивать оба типа событий.
Ввод вниз / вверх против Уменьшение / увеличение указателя
Ввод вверх / вниз генерируется контроллерами. Например, если вы посмотрите на классы, которые вызывают MixedRealityInputSytem.RaiseOnInputDown
, вы увидите следующий код, вызывающий RaiseOnInputDown:
GenericJoystickController.cs
WindowsMixedRealityController.cs
MouseController.cs
Другими словами, это «необработанные входные данные», которые представляют такие вещи, как «кнопка выбора была нажата на контроллере.
В отличие от этого, OnPointerDown / Up вызываются указателями. Например, если вы поищете ссылку на MixedRealityInputSystem.RaisePointerDown, вы увидите следующие файлы:
GazeProvider.cs
BaseControllerPointer.cs
GGVPointer.cs
PokePointer.cs
Другими словами, это входные данные более высокого уровня, которые поступают от разных типов диспетчеров указателей — например, от указателей ближнего взаимодействия (указатели сфер), указателей дальнего взаимодействия (указатели линий) или указателей касания (указатели тычков).
Зачем прослушивать PointerDown / Up вместо InputDown / Up
Прослушивание указателя вниз и вверх от указателей позволит вам различать такие вещи, как ближнее и дальнее взаимодействие, поскольку вы можете посмотреть на указатель, который отправил событие, и проверить, реализует ли указатель IMixedRealityNearPointer
.