Mixed Reality服務登錄 — MRTK2

Mixed Reality工具組有兩個非常類似的具名元件,可執行相關工作:MixedRealityServiceRegistry 和 IMixedRealityServiceRegistrar。

MixedRealityServiceRegistry

MixedRealityServiceRegistry是包含每個已註冊服務實例的元件, (核心系統和擴充服務) 。

注意

MixedRealityServiceRegistry 包含實作 IMixedRealityService 介面的物件實例,包括 IMixedRealityExtensionService

實作 IMixedRealityDataProvider 的物件 (IMixedRealityService) 的子類別明確未在 MixedRealityServiceRegistry 中註冊。 這些物件是由個別服務所管理 (,例如:空間感知) 。

MixedRealityServiceRegistry 會實作為靜態 C# 類別,而且是用來在應用程式程式碼中取得服務實例的建議模式。

下列程式碼片段示範如何取得 IMixedRealityInputSystem 實例。

IMixedRealityInputSystem inputSystem = null;

if (!MixedRealityServiceRegistry.TryGetService<IMixedRealityInputSystem>(out inputSystem))
{
    // Failed to acquire the input system. It may not have been registered
}

IMixedRealityServiceRegistrar

IMixedRealityServiceRegistrar是一種介面,可定義由管理一或多個服務註冊之元件所實作的功能。 實作 IMixedRealityServiceRegistrar 的元件負責新增和移除 MixedRealityServiceRegistry 中的資料。 MixedRealityToolkit物件是這類元件之一。

您可以在 MRTK/SDK/實驗性/功能資料夾中找到其他註冊機構。 這些元件可用來新增單一服務 (例如:空間感知) 對應用程式的支援。 以下列出這些單一服務管理員。

除了 InputSystemManager 之外,上述每個元件都負責管理單一服務類型的註冊和狀態。 InputSystem 需要一些額外的支援服務 (例如:由 InputSystemManager 管理的 FocusProvider) 。

一般而言,IMixedRealityServiceRegistrar 所定義的方法會由服務管理元件在內部呼叫,或由需要其他服務元件才能正常運作的服務呼叫。 應用程式程式碼通常不應該呼叫這些方法,因為這麼做可能會導致應用程式無法預期 (例如:快取的服務實例可能會變成無效) 。

另請參閱