指针和输入之间为什么存在差异?

时间:2019-04-23 08:55:31

标签: mrtk

在将一些代码转换为新的MRTK RC1时,我发现了两个版本,例如输入和指针的Up和Down事件。现在我在想,区别是什么?为什么会有这种差异?如果要在桌面(鼠标使用I​​nput版本)和XR设备(指针版本)上运行相同的应用程序,是否需要同时实现?

1 个答案:

答案 0 :(得分:0)

好问题!我对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