版本:Unity 6 (6000.0)
语言:英语
UnitySubsystemsManifest.json
子系统

运行时子系统发现和激活

将以下脚本添加到您的项目中,以便扫描并创建或启动具有idDisplay0的显示子系统。 您可以更改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] 开头的行。

在 C# 中找不到子系统

如果您刚刚添加了 .json 和插件文件,请确保重新启动 Unity。 目前,Unity 仅在启动时发现这些文件。 此外,请确保提供者使用正确的文件布局

查找和解析 UnitySubsystemsManifest.json 文件时出错

错误 描述
[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 方法的实现。
UnitySubsystemsManifest.json
子系统