核心系統 - MRTK2
輸入系統的核心是 InputSystem,這是負責初始化和操作與 MRTK 相關聯之所有輸入相關功能的服務。
注意
假設讀者已經閱讀過,而且對 術語 一節有基本的瞭解。
此服務負責:
- 讀取 輸入系統設定檔
- 例如,
Windows Mixed Reality Device Manager
啟動已設定的資料提供者 (,以及OpenVR Device Manager
) 。 - GazeProvider的具現化,這是負責提供 HoloLens (第 1 代) 樣式頭部注視資訊的元件,除了HoloLens 2樣式的眼球注視資訊之外。
- FocusProvider的具現化,這是負責判斷具有焦點之物件的元件。 這在檔的 指標和焦點 一節中會更深入地說明。
- 提供所有輸入事件的註冊點, (做為 全域接聽程式) 。
- 提供這些輸入事件的事件分派功能。
輸入事件
輸入事件通常會在兩個不同的通道上引發:
焦點中的物件
事件可以直接傳送至具有焦點的 GameObject。 例如,物件可能有實作 的 IMixedRealityTouchHandler
腳本。
這個物件會在接近它的手部焦點時取得觸控事件。 這些類型的事件會「上移」GameObject 階層,直到找到能夠處理事件的 GameObject 為止。
這是使用來自預設輸入系統實作內的 ExecuteHierarchy 來完成。
全域接聽程式
事件可以傳送至全域接聽程式。 您可以使用輸入系統的 IMixedRealityEventSystem
介面來註冊所有輸入事件。 建議您使用 RegisterHandler 方法來註冊全域事件 - 已被取代 Register
的函式會導致接聽程式收到所有輸入事件的通知,而不只是特定類型的輸入事件 (事件,其中類型是由事件介面所定義) 。
請注意, 後援接聽程式 是另一種全域接聽程式,也不建議使用,因為它們會收到場景中其他位置未處理的每個單一輸入事件。
事件分派的順序
一般而言,事件會以下列方式傳送至接聽程式。 請注意,如果下列任何步驟將事件標示為 已處理,事件分派進程就會停止。
- 事件會傳送至全域接聽程式。
- 事件會傳送至焦點物件的強制回應對話方塊。
- 事件會傳送至焦點物件。
- 事件會傳送至後援接聽程式。
裝置管理員和資料提供者
這些實體負責與較低層級 API (互動,例如Windows Mixed Reality API 或 OpenVR API) ,並將來自這些系統的資料轉譯成符合 MRTK 較高層級輸入抽象概念的資料。 它們負責偵測、建立及管理 控制器的存留期。
裝置管理員的基本流程包括: