将以下脚本添加到您的项目中,以便扫描并创建或启动具有id
为Display0
的显示子系统。 您可以更改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";
// Use this for initialization
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 管理 包是用于在运行时配置子系统加载的用户界面UI(用户界面) 允许用户与您的应用程序交互。 Unity 目前支持三种 UI 系统。 更多信息
参见 术语表。 它使用相同的底层 API(如上所述)来创建和管理子系统。 如果您希望您的提供者出现在XR一个涵盖虚拟现实 (VR)、增强现实 (AR) 和混合现实 (MR) 应用程序的总称。 支持这些形式的交互式应用程序的设备可以称为 XR 设备。 更多信息
参见 术语表 设置 UI 中,请编写一个XRLoader。
如果您的插件在 Unity 之外创建的一组代码,用于在 Unity 中创建功能。 您可以在 Unity 中使用两种类型的插件:托管插件(使用 Visual Studio 等工具创建的托管 .NET 程序集)和原生插件(平台特定的原生代码库)。 更多信息
参见 术语表 无法加载,请查看下面的故障排除 部分。
要对子系统提供者的初始化或启动进行故障排除,请检查编辑器日志或播放器输出日志 中以[XR]
或 [Subsystems]
开头的行。
如果您刚刚添加了 .json 和插件文件,请确保重新启动 Unity。 目前,Unity 仅在启动时发现这些文件。 此外,请确保提供者使用正确的文件布局。
错误 | 描述 |
---|---|
[XR] 在 Assets/UnityXRDisplayExample/UnitySubsystemsManifest.json 中匹配了 3 个“显示”描述符 | Unity 成功找到显示描述符,并为该插件注册了三个不同的id 。 |
[XR] 在 Assets/UnityXRDisplayExample/UnitySubsystemsManifest.json 中没有匹配输入的描述符。 | .json 文件不包含任何输入描述符。 如果您没有实现输入子系统,这是正常的。 如果您希望 Unity 在您的 .json 文件中找到描述符,它们可能格式错误。 请参阅有关UnitySubsystemsManifest.json 的文档,了解要使用的正确格式。 |
[XR] 无法解析 Assets/UnityXRDisplayExample/UnitySubsystemsManifest.json 的 json 标头(您是否忘记包含 name 或 libraryName 字段?) | 这可能意味着您的 .json 文件格式错误。 使用验证工具(例如json linter)运行它。 |
错误 | 描述 |
---|---|
[XR] PluginName 无法为 DisplayId 注册提供者(json 名称或 id 不匹配?) | 这意味着RegisterLifecycleProvider 的前两个参数与 .json 文件不匹配。第一个参数 pluginName 应与 .json 文件中的name 字段匹配。第二个参数 id 应与 .json 文件中子系统的id 字段匹配。 |
[XR] 无法为子系统 DisplayId 加载插件 PluginName | 找不到您的插件、它构建于错误的体系结构,或者它缺少需要加载的依赖项。 在后一种情况下,您可以使用Dependency Walker 工具来查找是否有缺少的依赖项。 |
错误 | 描述 |
---|---|
[XR] 无法初始化子系统 DisplayId [错误:1] | Unity 调用了您的Initialize 方法,但它返回了kUnitySubsystemErrorCodeFailure 。 请仔细检查您的Initialize 方法的实现。 |