0

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

4

1 回答 1

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

于 2019-04-25T04:49:43.603 回答