mrtk_developmentreleases/2.0.0releases/2.1.0releases/2.2.0

    Show / Hide Table of Contents

    核心系统

    输入系统(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,事件分发过程停止。

    1. 事件发送到全局侦听器。
    2. 事件被发送到焦点对象的模式对话框。
    3. 事件被发送到焦点对象。
    4. 事件发送给后备侦听器(fallback listeners)。

    Device managers and data providers (设备管理器和数据提供者)

    这些实体负责与较低级别的API(例如Windows Mixed Reality API或OpenVR API)进行接口并将来自这些系统的数据转换为符合MRTK的高层输入抽象的数据。他们负责检测,创建和管理控制器的生命周期.

    设备管理器的基本流程包括:

    1. 设备管理器由输入系统服务实例化。
    2. 设备管理器向其底层系统注册(例如,Windows Mixed Reality设备管理器将注册输入 和手势 事件 .
    3. 它创建从底层系统中发现的控制器(例如,provider可以检测到全关节手的存在)
    4. 在其Update() 循环中,调用UpdateControlle() 以轮询底层系统的新状态并更新其控制器表示形式。
    • Improve this Doc
    In This Article
    • Input events(输入事件)
      • Objects in focus(焦点对象)
      • 全局侦听器
      • Order of event dispatch(事件派发顺序)
    • Device managers and data providers (设备管理器和数据提供者)
    Back to top Generated by DocFX