核心系統 - 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 的函式會導致接聽程式收到所有輸入事件的通知,而不只是特定類型的輸入事件 (事件,其中類型是由事件介面所定義) 。

請注意, 後援接聽程式 是另一種全域接聽程式,也不建議使用,因為它們會收到場景中其他位置未處理的每個單一輸入事件。

事件分派的順序

一般而言,事件會以下列方式傳送至接聽程式。 請注意,如果下列任何步驟將事件標示為 已處理,事件分派進程就會停止。

  1. 事件會傳送至全域接聽程式。
  2. 事件會傳送至焦點物件的強制回應對話方塊。
  3. 事件會傳送至焦點物件。
  4. 事件會傳送至後援接聽程式。

裝置管理員和資料提供者

這些實體負責與較低層級 API (互動,例如Windows Mixed Reality API 或 OpenVR API) ,並將來自這些系統的資料轉譯成符合 MRTK 較高層級輸入抽象概念的資料。 它們負責偵測、建立及管理 控制器的存留期。

裝置管理員的基本流程包括:

  1. 裝置管理員是由輸入系統服務具現化。
  2. 例如,裝置管理員會註冊其基礎系統 (,例如,Windows Mixed Reality裝置管理員會註冊輸入手勢事件。
  3. 它會建立從基礎系統探索的控制器 (例如提供者可能會偵測出已表達的手部)
  4. 在其 Update () 迴圈中,呼叫 UpdateController () 來輪詢基礎系統的新狀態,並更新其控制器標記法。