Display0
の id
で 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
で始まる行を確認してください。
.json とプラグインファイルを加えて間もない場合は、必ず Unity を再起動してください。現在、Unity は起動時にのみこれらのファイルを検出します。また、プロバイダーが正しい ファイルレイアウト を使用していることを確認してください。
エラー | 説明 |
---|---|
[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 メソッドの実装を再確認してください。 |