Google Cardboard for Unity 快速入门

本指南介绍了如何使用适用于 Unity 的适用于 Unity 的 Google Cardboard XR 插件打造您自己的虚拟现实 (VR) 体验。

您可以使用 Cardboard SDK 将手机转变为 VR 平台。智能手机可以显示立体呈现的 3D 场景、跟踪头部移动并做出反应,并通过检测用户何时按下观看器按钮来与应用互动。

首先,您将使用 HelloCardboard,这是一款演示游戏,演示了 Cardboard SDK 的核心功能。在游戏中,用户环顾虚拟世界,寻找并收集物品。该指南介绍了如何执行以下操作:

  • 设置您的开发环境
  • 下载并构建演示版应用
  • 扫描 Cardboard 观看器的二维码,保存其参数
  • 跟踪用户头部运动
  • 为每只眼睛设置正确的失真,渲染立体图像
  • 开启和关闭 VR 模式

设置您的开发环境

软件要求:

导入 SDK 并创建新项目

请按照以下步骤导入 Unity SDK 并创建一个新项目。

  1. 打开 Unity 并创建一个新的 3D 项目。
  2. 在 Unity 中,依次转到 Window > Package Manager
  3. 点击 +,然后选择 Add package from git 网址
  4. https://github.com/googlevr/cardboard-xr-plugin.git 粘贴到文本输入字段中。
    :应将软件包添加到已安装的软件包中。
  5. 找到适用于 Unity 的 Google Cardboard XR 插件软件包。在 Samples 部分中,选择 Import into Project
    示例资源应加载到 Assets/Samples/Google Cardboard/<version>/Hello Cardboard 中。

配置 HelloCardboard 场景

  1. 转到 Assets/Samples/Google Cardboard/<version>/Hello Cardboard/Scenes,选择 Add Open Scenes,然后选择 HelloCardboard 打开示例场景。
  2. 打开菜单,然后选择修改层...
  3. 定义一个名为“交互式”的新层。
  4. 点击 Treasure GameObject 以打开“Inspector”窗口。将其图层设置为“互动”。如果出现弹出式窗口,询问您是否要将所有子对象的图层也设置为交互式,请点击“是,更改子项”。
  5. 依次点击 Player > Camera > CardboardReticlePointer GameObject,以打开“Inspector”窗口。在“Carboard 十字线指针”脚本中,选择“Interactive”作为 Reticle Interaction Layer Mask

配置 Android 项目设置

依次转到 File > Build Settings

  1. 选择 Android,然后选择 Switch Platform
  2. 选择 Add Open Scenes,然后选择 HelloCardboard

Player Settings

分辨率和演示

依次转到 Project Settings > Player > Resolution and Presentation

  1. 默认方向设为向左横向横向向右
  2. 停用优化的帧同步

其他设置

前往 Project Settings > Player > Other Settings

  1. Graphics API 中选择 OpenGLES2OpenGLES3Vulkan 或它们的任意组合。
  2. Minimum API Level 中选择 Android 8.0 'Oreo' (API level 26) 或更高版本。
  3. 目标 API 级别中选择 API level 33 或更高级别。
  4. Scripting Backend 中选择 IL2CPP
  5. 目标架构中选择 ARMv7 和/或 ARM64,选择所需的架构。
  6. 互联网访问中选择 Require
  7. Package Name 下指定您的公司网域。
  8. 如果选择 Vulkan 作为 Graphics API
    • 取消选中 Vulkan 设置中的 Apply display rotation during render 复选框。
    • 如果 Unity 版本为 2021.2 或更高版本,请在纹理压缩格式中选择 ETC2
  9. 如果 Unity 版本为 2023.1 或更高版本,请选择 Activity 并在 Application Entry Point 中清除 GameActivity

发布设置

前往 Project Settings > Player > Publishing Settings(发布设置)。

  1. Build 部分中,选择 Custom Main Gradle TemplateCustom Gradle Properties Template
  2. 将以下代码行添加到 Assets/Plugins/Android/mainTemplate.gradle 的依赖项部分:

      implementation 'androidx.appcompat:appcompat:1.6.1'
      implementation 'com.google.android.gms:play-services-vision:20.1.3'
      implementation 'com.google.android.material:material:1.6.1'
      implementation 'com.google.protobuf:protobuf-javalite:3.19.4'
    
  3. 将以下几行代码添加到 Assets/Plugins/Android/gradleTemplate.properties 中:

      android.enableJetifier=true
      android.useAndroidX=true
    

XR 插件管理设置

依次转到 Project Settings > XR Plug-in Management

  1. 选择 Plug-in Providers(插件提供商)下方的 Cardboard XR Plugin

构建您的项目

依次转到 File > Build Settings

  1. 选择 Build,或者选择一个设备,然后选择 Build and Run

配置 iOS 项目设置

依次转到 File > Build Settings

  1. 选择 iOS,然后选择 Switch Platform
  2. 选择 Add Open Scenes,然后选择 HelloCardboard

Player Settings

分辨率和演示

依次转到 Project Settings > Player > Resolution and Presentation

  1. 默认方向设为向左横向横向向右

其他设置

前往 Project Settings > Player > Other Settings

  1. Camera Usage Description 中,写入 Cardboard SDK requires camera permission to read the QR code (required to get the encoded device parameters).
  2. 目标最低 iOS 版本中,写入 12.0
  3. Package Name 下指定您的公司网域。

XR 插件管理设置

依次转到 Project Settings > XR Plug-in Management

  1. 选择 Plug-in Providers(插件提供商)下方的 Cardboard XR Plugin

构建您的项目

依次转到 File > Build Settings

  1. 选择 BuildBuild and Run

重新置中

借助 Cardboard SDK,您可以使用 Recenter() 将头部跟踪器重新居中。

请按照以下步骤使用示例应用进行试用:

  1. 将设备移动到您要重新居中的位置(用作新的前瞻性头部姿势)。
  2. 按住 Cardboard 设备的扳机至少三秒钟。
  3. 松开触发器。
  4. 初始姿势现在位于镜头所指向的方向。

开启和关闭 VR 模式

借助 Unity XR Plugin Management API,您可以为 Google Cardboard XR Plugin for Unity 开启或关闭 VR 模式。如需查看最终用户文档和用法示例,请参阅 Unity 的最终用户文档

HelloCardboard 示例中的 VrMode 场景展示了上述 API 的基本用法。在此场景中,可以通过点按退出 来关闭 VR 模式,并且只需点按屏幕上的任意位置即可再次开启。如需详细了解其执行方式,请参阅 VrModeController.cs

后续步骤