Version: Unity 6.0 (6000.0)
语言 : 中文
创建 XR 项目
XR 输入选项

设置 XR 场景

要设置__ XR__虚拟现实(VR)、增强现实(AR)和混合现实(MR)应用的泛指术语。支持这些形式的交互式应用程序的设备可被称为 XR 设备。更多信息
See in Glossary
场景,请添加 XR 原点 (XR Origin)

这些对象是游戏对象和组件的集合,它们提供的参考框架可用于将空间跟踪数据转换为场景(包括控制场景摄像机)。将 XR 原点添加到场景中后,它会控制连接的摄像机来跟踪用户的头戴式 (VR) 或手持式 (AR) 设备。此外,包含控制器游戏对象的 XR 原点版本将移动这些游戏对象以跟踪用户的控制器。

注意

  • 之前的 XR 骨架 (XR Rig) 名称已从“骨架”更改为“原点”,以便更好地反映对象在 Unity 场景中的角色。此外,XR 原点组件取代了摄像机偏移 (Camera Offset) 组件,并提供了一些其他设置。请参阅 XR 原点组件以了解更多信息。
  • 如果未在项目中安装 XR Interaction Toolkit 包,则将摄像机转换为 XR 骨架 (Convert Camera to XR Rig) 选项仍会显示在游戏对象 (GameObject) > XR 菜单中。虽然此选项仍然有效,但 Unity 建议使用 XR Interaction Toolkit 或 AR Foundation 包中的相应 XR 原点选项,以获得与其他 XR 功能的最佳兼容性。
  • AR Session Origin 已被第 5 版__ AR__即增强现实 (Augmented Reality, AR)。更多信息
    See in Glossary
    Foundation 包中的 XR 原点 (AR)XR 原点(移动端 AR)选项所取代。
  • 某些 XR 原点对象附带的控制器游戏对象没有视觉组件(例如网格),并且未配置为接收除跟踪数据之外的用户输入数据。如果需要,必须添加 3D 模型和根据用户输入进行操作所需的组件或脚本。XR Interaction Toolkit 包提供了用于处理用户输入的组件。

请参阅 XR 原点,查看可用于场景中的 XR 原点选项的描述。

先决条件

在为 XR 设置场景之前,必须首先:

  • 为 XR 设置项目
  • 如果要开发 AR 应用程序,请将 AR Foundation 添加到项目中。
  • 如果计划使用 XR Interaction Toolkit 包,请添加此包(推荐)。
  • 如果使用 XR Interaction Toolkit,请导入入门资源。这些资源包含可用于配置 XR 控制器输入的 Input System 操作和预设。

为 XR 设置场景

为 XR 设置场景的基本步骤包括:

  1. 在 Unity 编辑器 (Editor) 中创建或打开场景。
  2. 使用游戏对象 (GameObject) > XR 菜单将 XR 原点选项之一添加到场景中。菜单中将显示不同的选项,具体取决于向项目添加了哪些 XR 包。请参阅 XR 原点,查看可用 XR 原点选项的描述。
  3. 配置 XR 输入。请参阅 XR 输入选项以了解更多信息。

您的项目可能会有其他设置注意事项,具体取决于您计划使用的项目类型、平台和 Unity 包:

  • 对于 AR 项目,请参阅 AR Foundation 手册中的场景设置以了解其他设置步骤和更详细的说明。

  • 对于使用 XR Interaction Toolkit 的__ VR__虚拟现实。更多信息
    See in Glossary
    项目,请参阅交互工具包手册中的常规设置以了解更多信息。

  • 对于 Apple Vision Pro 上的 AR/MR 项目,请使用 Volume 摄像机而不是 XR 原点。请参阅 PolySpatial visionOS:启动新的 visionOS 项目

  • 对于 Apple Vision Pro 上的 VR 项目,必须将 AR Foundation 包中的 AR Session 对象添加到场景中才能访问头部和手部跟踪数据。此设备上的 VR 应用程序还可以访问其他 ARKit 数据,例如平面检测、场景重建网格和图像跟踪。请参阅 visionOS 上的完全沉浸式 VR

检测是否启用了 XR

如果有一个场景可以同时在 XR 和非 XR 上下文中使用,则可以使用 XRSettings.enabled 属性来检测 XR 子系统当前是否已加载并处于活动状态。借助此信息,就可以激活或停用相应的游戏对象和组件集。

public void CheckXRStatus()
{
    if (UnityEngine.XR.XRSettings.enabled)
    {
        Debug.Log("XR is active.");
    }
    else
    {
        Debug.Log("XR is not available.");
    }
}

注意:可以通过读取 XRSettings.enabled 属性的值来确定 XR 状态。但是,系统不再支持设置该值,并且不执行任何操作。有关如何在运行时动态打开和关闭 XR,请参阅管理 XR 加载程序生命周期

创建 XR 项目
XR 输入选项