【发布时间】:2019-04-25 12:49:43
【问题描述】:
在将一些代码转换为新的 MRTK RC1 时,我发现了两个版本,例如向上和向下事件,用于输入和指针。现在我想知道,有什么区别?为什么会有这种差异?如果我想在桌面(鼠标使用输入版本)和 XR 设备(指针版本)上运行相同的应用程序,是否需要同时实现?
【问题讨论】:
标签: mrtk
在将一些代码转换为新的 MRTK RC1 时,我发现了两个版本,例如向上和向下事件,用于输入和指针。现在我想知道,有什么区别?为什么会有这种差异?如果我想在桌面(鼠标使用输入版本)和 XR 设备(指针版本)上运行相同的应用程序,是否需要同时实现?
【问题讨论】:
标签: mrtk
好问题!我对 InputUp/Down 和 PointerUp/Down 之间区别的理解是关于事件的来源。简而言之,我建议监听指针事件而不是原始输入事件。您不需要同时监听这两种类型的事件。
InputUp/Down 由控制器生成。例如,如果您查看调用 MixedRealityInputSytem.RaiseOnInputDown 的类,您将看到以下代码调用 RaiseOnInputDown:
GenericJoystickController.cs
WindowsMixedRealityController.cs
MouseController.cs
换句话说,这些是“原始输入”,表示“在控制器上按下了选择按钮。
相比之下,OnPointerDown/Up 是由指针引发的。例如,如果您查找对 MixedRealityInputSystem.RaisePointerDown 的引用,您将看到以下文件:
GazeProvider.cs
BaseControllerPointer.cs
GGVPointer.cs
PokePointer.cs
换句话说,这些是来自不同类型的指针调度程序的更高级别的输入——例如来自近交互指针(球体指针)、远交互指针(线指针)或触摸指针(戳指针)。
从指针中侦听向下和向上指针将使您能够区分诸如近交互和远交互之类的事情,因为您可以查看发送事件的指针并检查指针是否实现IMixedRealityNearPointer。
【讨论】: