Почему есть или есть ли разница между указателем и входом?

#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 .