Mixed Reality サービス レジストリ — MRTK2
Mixed Reality ツールキットには、MixedRealityServiceRegistry と IMixedRealityServiceRegistrar という、関連するタスクを実行する名前が非常によく似た 2 つのコンポーネントがあります。
MixedRealityServiceRegistry
MixedRealityServiceRegistry は、各登録済みサービス (コア システムと拡張サービス) のインスタンスを含むコンポーネントです。
Note
MixedRealityServiceRegistry には、IMixedRealityExtensionService を含め、IMixedRealityService インターフェイスを実装するオブジェクトのインスタンスが含まれています。
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 はインターフェイスであり、1 つ以上のサービスの登録を管理するコンポーネントによって実装される機能を定義します。 IMixedRealityServiceRegistrar を実装するコンポーネントは、MixedRealityServiceRegistry 内のデータの追加と削除を行う役割を担っています。 MixedRealityToolkit オブジェクトは、このようなコンポーネントの 1 つです。
その他のレジストラーは、MRTK/SDK/Experimental/Features フォルダーにあります。 これらのコンポーネントを使用すると、1 つのサービス (空間認識など) のサポートをアプリケーションに追加できます。 これらの 1 つのサービスのマネージャーを以下に一覧します。
- BoundarySystemManager
- CameraSystemManager
- DiagnosticsSystemManager
- InputSystemManager
- SpatialAwarenessSystemManager
- TeleportSystemManager
InputSystemManager 以外の上記の各コンポーネントは、1 つのサービスの種類の登録と状態を管理する役割を担っています。 InputSystem にはいくつかの追加のサポート サービス (FocusProvider など) が必要であり、これらも InputSystemManager によって管理されます。
一般に、IMixedRealityServiceRegistrar によって定義されたメソッドは、サービス管理コンポーネントによって内部で呼び出されるか、または正常に機能するために追加のサービス コンポーネントが必要なサービスによって呼び出されます。 通常は、アプリケーション コードでこれらのメソッドを呼び出さないでください。そうすることで、アプリケーションが (キャッシュされたサービス インスタンスが無効になるなど) 予期しない動作をするおそれがあります。