Отличный вопрос! Мое понимание разницы между InputUp / Down и PointerUp / Down заключается в том, откуда происходят события. Короче говоря, я бы рекомендовал прослушивать события указателя вместо необработанных входных событий. Вам не нужно слушать оба типа событий.
InputDown / Up против PointerDown / Up
InputUp / 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
.