MixedRealityServiceRegistry と IMixedRealityServiceRegistrar とは何か?
Mixed Reality Toolkit には、関連するタスクを行う2つの非常に似た名前のコンポーネントがあります。 MixedRealityServiceRegistry と IMixedRealityServiceRegistrar です。
MixedRealityServiceRegistry
Mixed
Note
MixedRealityServiceRegistry は、IMixed
IMixed
MixedRealityServiceRegistry は静的な C# クラスとして実装されており、 アプリケーション コードでサービスのインスタンスを取得するのに使われる推奨パターンです。
以下のスニペットは、IMixedRealityInputSystem のインスタンスを取得するデモです。
IMixedRealityInputSystem inputSystem = null;
if (!MixedRealityServiceRegistry.TryGetService<IMixedRealityInputSystem>(out inputSystem))
{
// input system の取得に失敗。登録されていないかもしれない。
}
IMixedRealityServiceRegistrar
IMixed
その他の registrars は MixedRealityToolkit.SDK.Experimental.Features フォルダーにて見つけることができます。 これらのコンポーネントは、単一のサービス(例えば、Spatial Awareness)のサポートをアプリケーションに追加するのに使うことができます。 これらの、単一サービスのマネージャーは以下の通りです。
- Boundary
System Manager - Camera
System Manager - Diagnostics
System Manager - Input
System Manager - Spatial
Awareness System Manager - Teleport
System Manager
上記コンポーネントの内 InputSystemManager 以外のものは、単一のサービス タイプの登録と状態を管理する責務があります。 InputSystem はいくつかの追加のサポート サービス(例えば、FocusProvider)を必要とし、それらもまた InputSystemManager によって管理されます。
一般的に、IMixedRealityServiceRegistrar によって定義されたメソッドはサービス マネジメント コンポーネントによって内部的に呼ばれる、もしくは、正しく機能するために追加のサービス コンポーネントを必要とするサービスによって呼ばれます。 アプリケーション コードは、一般的に、これらのメソッドを呼ぶべきではありません。 アプリケーションが予想外の動きをする(例えば、キャッシュされたサービス インスタンスが無効になるかもしれない)可能性があるためです。