核心系统
输入系统(input system)的核心是混合现实输入系统,该服务负责初始化和操作与MRTK相关的所有与输入有关的功能。
Note
假定读者已经阅读并基本了解术语部分.
该服务负责:
- 读取输入系统配置文件
- 启动配置好的data providers (例如
Windows Mixed Reality Device Manager
和OpenVR Device Manager
). - 实例化GazeProvider,该组件除了提供HoloLens2风格的视线凝视信息外,还负责提供HoloLens1风格的视线凝视信息。
- 实例化FocusProvider,它是负责确定具有焦点的对象的组件。这在指针和焦点文档部分描述。
- 提供所有输入事件的注册点(例如全局侦听器).
- 为这些输入事件提供事件分发功能。
Input events(输入事件)
输入事件通常在两个不同的通道上触发:
Objects in focus(焦点对象)
事件可以直接发送到具有焦点的GameObject。例如,一个对象可能有一个实现IMixedRealityTouchHandler
的脚本。当一只手靠近该对象时,该对象将获得触摸事件。这些类型的事件在GameObject层次结构中“上升”,直到找到能够处理该事件的GameObject。
这是通过在默认输入系统实现中使用ExecuteHierarchy实现。
全局侦听器
事件可以发送到全局侦听器(Global listeners)。可以使用输入系统的IMixedRealityEventSystem
接口注册所有输入事件。建议使用RegisterHandler方法注册全局事件-已弃用的Register
函数将导致侦听器获得所有输入事件的通知,而不仅仅是特定类型的输入事件(其中类型由事件接口定义)。
注意fallback listeners是不鼓励使用的另一种全局侦听器,因为它们将接收场景中其他地方未处理的每个输入事件。
Order of event dispatch(事件派发顺序)
通常,事件以以下方式发送给侦听器。请注意,如果以下任何步骤将事件标记为handled,事件分发过程停止。
- 事件发送到全局侦听器。
- 事件被发送到焦点对象的模式对话框。
- 事件被发送到焦点对象。
- 事件发送给后备侦听器(fallback listeners)。
Device managers and data providers (设备管理器和数据提供者)
这些实体负责与较低级别的API(例如Windows Mixed Reality API或OpenVR API)进行接口并将来自这些系统的数据转换为符合MRTK的高层输入抽象的数据。他们负责检测,创建和管理控制器的生命周期.
设备管理器的基本流程包括: