プロバイダーの実装
このパッケージの 1 つ以上のサブシステムに対応したプロバイダーを実装する際は (新しい AR (拡張現実) デバイスのハードウェアメーカーのお客様である場合など)、そのサブシステムの基本クラスから継承することをお勧めします。このタイプの基本クラスは XRUnityEngine.XR.ARSubsystems
名前空間にあります。サブシステムの各基本クラスには、Provider
というネストされた抽象クラスがあり、これがお客様がサポートする予定の各システムに対して実装する必要がある主要インターフェースになります。
サブシステムの実装は、それぞれを独立させる必要があります。例えば、XRPlaneSubsystem の実装の動作は、XRPointCloudSubsystem の実装がユーザーのシーン内でアクティブかどうかにかかわらず、同一である必要があります。
サブシステム記述子の登録
各サブシステムのタイプには、対応するサブシステム記述子のタイプがあります。プロバイダーは、ランタイムでのサブシステムの検出およびアクティベーションを有効にするために、Unity の SubsystemManager を使用してサブシステム記述子のインスタンスを作成、登録する必要があります。サブシステム記述子を登録するには、以下の例のように、[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.SubsystemRegistration)]
属性を使用して static void メソッドを含め、その中で、登録するサブシステム記述子のタイプに適した登録メソッドを呼び出します。
// このクラスでは Raycast サブシステムのプロバイダーを定義します
class MyRaycastSubsystem : XRRaycastSubsystem
{
class MyProvider : Provider
{
// ...
// XRRaycastSubsystem.Provider は、実装する
// ネストされた抽象クラスです
// ...
}
// このメソッドによって、SubsystemManager を使用してサブシステム記述子を登録します
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.SubsystemRegistration)]
static void RegisterDescriptor()
{
// この例では XRRaycastSubsystemDescriptor が登録ヘルパーメソッドを
// 提供します。詳細は各サブシステム記述子の API ドキュメントを
// 参照してください
XRRaycastSubsystemDescriptor.RegisterDescriptor(new XRImageTrackingSubsystemDescriptor.Cinfo
{
providerType = typeof(MyProvider),
subsystemTypeOverride = typeof(MyRaycastSubsystem),
// ...
// ご利用のプロバイダーの実装の詳細情報に基づいて、すべての必須フィールドに
// データを入力してください
// ...
});
}
}
ネイティブプラグイン
メッシュサブシステムをはじめとする一部の XR サブシステムは、ARSubsystems
名前空間で定義されていません。こうしたサブシステムは、Unity の ネイティブのプラグインインターフェース に準拠しており、C# では記述子を登録することができません。ネイティブのプラグインの詳細については、Unity XR SDK のドキュメント を参照してください。
トラッキングサブシステムの実装
各トラッキングサブシステムには、GetChanges というメソッドが定義されています。このメソッドは、GetChanges に対する前回の呼び出し以降に追加、更新、削除されたトラッカブルをすべてレポートします。GetChanges メソッドは、フレームごとに 1 回呼び出されるように実装する必要があります。プロバイダーは、まず追加してからでないと、トラッカブルを更新、削除することはできません。また、プロバイダーはトラッカブルを削除後に更新することもできません。
XR Loader の実装
XRLoader
の役割は、Project Settings > XR Plug-in Management の設定に基づいてサブシステムのインスタンスを作成、除去することです。すべてのプロバイダープラグインは、XRLoader
を実装する必要があります。XRLoader
のオーサリングに関する詳細については、XR Plug-in Management のプロバイダーに関するドキュメント を参照してください。
XRLoader
の実装例については、ARCoreLoader や ARKitLoader などの既存のプロバイダープラグインで確認できます。これらのパッケージをインストールすることで、ソースコードを確認できます。