核心系统 - MRTK2
输入系统的核心是 InputSystem,它是一项服务,负责初始化和操作与 MRTK 关联且与输入相关的所有功能。
注意
假设读者已经阅读并大致了解术语部分。
此服务负责:
- 读取输入系统配置文件
- 启动配置的数据提供程序(例如
Windows Mixed Reality Device Manager
和OpenVR Device Manager
)。 - 将 GazeProvider 实例化,它是一个组件,负责提供 HoloLens(第一代)样式头部凝视信息和 HoloLens 2 样式眼部凝视信息。
- 将 FocusProvider 实例化,它是负责确定具有焦点的对象的组件。 有关详细信息,请参阅本文档的指针和焦点部分。
- 为所有输入事件提供注册点(作为全局侦听器)。
- 为这些输入事件提供事件调度功能。
输入事件
输入事件通常在两个不同的通道上触发:
焦点对象
可直接将事件发送到具有焦点的 GameObject。 例如,对象可能有实现 IMixedRealityTouchHandler
的脚本。
当手放在对象附近产生焦点时,该对象会获得触摸事件。 这些类型的事件会在 GameObject 层次结构中“上移”,直到它找到能够处理事件的 GameObject 为止。
为此,会从默认输入系统实现内部使用 ExecuteHierarchy。
全局侦听器
可将事件发送到全局侦听器。 可使用输入系统的 IMixedRealityEventSystem
接口注册所有输入事件。 建议使用 RegisterHandler 方法来注册全局事件 - 已弃用的 Register
函数将导致侦听器就所有输入事件收到通知,而不是仅收到特定类型的输入事件(其类型由事件接口定义)的通知。
请注意,回退侦听器是另一种类型的全局侦听器,我们也不建议使用它们,因为它们将接收未在场景中其他位置处理的每一个输入事件。
事件调度顺序
通常,事件按照以下方式发送到侦听器。 请注意,如果以下任一步骤将事件标记为已处理,则事件调度进程将停止。
- 事件发送到全局侦听器。
- 事件发送到焦点对象的模式对话。
- 事件发送到焦点对象。
- 事件发送到回退侦听器。
设备管理器和数据提供程序
这些实体负责与较低级别的 API(例如 Windows Mixed Reality API 或 OpenVR API)进行交互,并将来自这些系统的数据转换到适合 MRTK 更高级别输入抽象的系统中。 它们负责检测、创建和管理控制器的生存期。
设备管理器的基本流程涉及: