Version: 2020.3
言語: 日本語
UnitySubsystemsManifest.json
XR SDK 入力サブシステム

サブシステムのランタイム検索とアクティベーション

Display0id で Display サブシステムをスキャンして作成または起動するために、以下のスクリプトをプロジェクトに追加します。他の Display サブシステムをロードしたい場合は、match の変数を変更します。

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Experimental.XR;
using UnityEngine.XR;

public class Display : MonoBehaviour
{
    public string match = "Display0";

    // 初期化には以下を使用します
    void Start ()
    {
        List<XRDisplaySubsystemDescriptor> displays = new List<XRDisplaySubsystemDescriptor>();
        SubsystemManager.GetSubsystemDescriptors(displays);
        Debug.Log("Number of display providers found: " + displays.Count);

        foreach (var d in displays)
        {
            Debug.Log("Scanning display id: " + d.id);

            if (d.id.Contains(match))
            {
                Debug.Log("Creating display " + d.id);
                XRDisplaySubsystem dispInst = d.Create();

                if (dispInst != null)
                {
                    Debug.Log("Starting display " + d.id);
                    dispInst.Start();
                }
            }
        }
    }
}

XR Management パッケージは、ランタイムにサブシステムのロードを設定するためのユーザ向け UI です。サブシステムを作成管理するために、同じ基盤 API (前述) を使用します。プロバイダーを XR Settings UI に表示したい場合は、XRLoader を記述します。

プラグインの読み込みに失敗する場合は、後述のト ラブルシューティング を参照してください。

ランタイムのプラグイン検出のトラブルシューティング

サブシステムのプロバイダーの初期化や起動をトラブルシュートするには、エディターログ、またはプレイヤー出力ログXR または Subsystems で始まる行を確認してください。

C# でサブシステムが見つかりませんでした

.json とプラグインファイルを加えて間もない場合は、必ず Unity を再起動してください。現在、Unity は起動時にのみこれらのファイルを検出します。また、プロバイダーが正しい ファイルレイアウト を使用していることを確認してください。

UnitySubsystemsManifest.json ファイルの検索と解析時のエラー

エラー 説明
[XR] 3 ‘displays’ descriptors matched in Assets/UnityXRDisplayExample/UnitySubsystemsManifest.json Unity はディスプレイディスクリプターの検出に成功し、このプラグインに 3 つの異なる id を登録しています。
[XR] No descriptors matched for inputs in Assets/UnityXRDisplayExample/UnitySubsystemsManifest.json. .json ファイルに入力ディスクリプターが含まれていません。入力サブシステムを実装していない場合、これは正常です。
Unity が .json ファイルでディスクリプターの検出が期待される場合、それらは不正な形式である可能性があります。使用する正しい形式については、UnitySubsystemsManifest.json のドキュメントを参照してください。
[XR] Failed to parse json header for Assets/UnityXRDisplayExample/UnitySubsystemsManifest.json (did you forget to include name or libraryName fields?) これは、不正な .json ファイルがあることを意味すると考えられます。json linter のような検証ツールで確認してください。

プロバイダープラグインの検索とロードに関するエラー

エラー 説明
[XR] PluginName failed to register Provider for DisplayId (json name or id doesn’t match?) これは、RegisterLifecycleProvider の最初の 2 つの引数が、.json ファイルと一致していないことを意味します。
最初の引数である pluginName は、.json ファイルの name フィールドと一致する必要があります。
2 番目の引数である id は、.json ファイルのサブシステムの id フィールドと一致する必要があります。
[XR] Unable to load plugin PluginName for subsystem DisplayId プラグインが見つかりませんでした。誤ったアーキテクチャ用にビルドされているか、ロードする必要のある依存関係が不足しています。後者の場合は、Dependency Walker ツールを使用して、不足している依存関係があるかどうかを調べることができます。

プロバイダーの初期化に関するエラー

エラー 説明
[XR] Failed to initialize subsystem DisplayId [error: 1] Unity は Initialize メソッドを呼び出しましたが、kUnitySubsystemErrorCodeFailure が返されました。Initialize メソッドの実装を再確認してください。
UnitySubsystemsManifest.json
XR SDK 入力サブシステム