本日は MRTKv2 の調査枠です。
MRTKv2 の Guides ドキュメントを少しずつ読み進めていきます。
MRTKv2のGuidesドキュメント
以下のドキュメントを読み進めていきます。
microsoft.github.io
以下のページでは有志による本ドキュメントの日本語翻訳が行われています。
投稿時点でこちらで未翻訳、または著者が興味のある部分について記事にしていきます。
hololabinc.github.io
本記事では以下のページを読み進めます。
microsoft.github.io
MixedRealityServiceRegistryとIMixedRealityServiceRegistrarとは?
Mixed Reality Toolkitには、関連するタスクを実行する以下の2つのコンポーネントがあります。
・MixedRealityServiceRegistry
・IMixedRealityServiceRegistrar
MixedRealityServiceRegistry
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 // 入力系の取得に失敗しました。 // 登録されていない可能性があります。 }
注意
MixedRealityServiceRegistry には IMixed Reality Extension Service を含む、IMixed Reality Service インターフェースを実装するオブジェクトのインスタンスが含まれています。
Mixed Reality Data Provider(IMixedRealityServiceのサブクラス)を実装するオブジェクトは、MixedRealityServiceRegistry に明示的に登録されていません。
これらのオブジェクトは、個々のサービス(例:空間認識)によって管理されます。
IMixedRealityServiceRegistrar
IMixedRealityServiceRegistrar は実装される機能を定義するインターフェースです。
IMixedRealityServiceRegistrar を実装するコンポーネントは MixedRealityServiceRegistry 内のデータの追加と削除を担当します。
その他の Registrar は MixedRealityToolkit.SDK/Experimental/Features フォルダーにあります。
これらのコンポーネントを使用して、アプリケーションに単一のサービス(例:Spatial Awareness)サポートを追加できます。
これらの単一サービスマネージャーを以下に示します。
・BoundarySystemManager
・CameraSystemManager
・DiagnosticsSystemManager
・InputSystemManager
・SpatialAwarenessSystemManager
・TeleportSystemManager
上記の各コンポーネントは、InputSystemManager を除き、単一のサービスタイプの登録とステータスを管理します。
InputSystem には InputSystemManager によって管理される追加のサポートサービス(例:FocusProvider)が必要です。
一般に、IMixedRealityServiceRegistrar によって定義されたメソッドは、サービス管理コンポーネントによって内部的に呼び出されるか、正しく機能するために追加のサービスコンポーネントを必要とするサービスによって呼び出されます。
アプリケーションコードは通常、これらのメソッドを呼び出さないでください。
呼び出すと、アプリケーションが予期しない動作をする可能性があります。
(たとえば、キャッシュされたサービスインスタンスが無効になる場合があります)