第 02 课
项目初始化
一个可以浏览的三维场景还不是 VR 应用。Unity 需要依次认识目标平台、交互工具、设备接口、玩家对象和实体地面。本课统一使用 Unity 2022.3.62f3c1 与 XR Interaction Toolkit 3.1.2,完成这条初始化链,并学会根据现象找到对应的设置位置。
把美术场景初始化为可以继续开发的 VR 项目
从课堂发放的美术起始工程开始,依次完成主场景、Android、交互工具、PICO 设备支持、玩家、地面和代码编辑环境的初始化配置。
学完你将能够
学习目标
- 说出 Unity、Android、XR Interaction Toolkit、OpenXR 与 PICO 4 Ultra 各自承担的工作。
- 把项目切换为 Android 与 ASTC,并理解 SDK、NDK、OpenJDK 的用途。
- 确认 XRI 3.1.2,导入 Starter Assets 与 XR Device Simulator。
- 确认 PICO OpenXR Plugin 1.4.1,并在 Android 下启用 OpenXR 与 PICO 控制器配置。
- 建立唯一活动的 XR Origin 和头显相机,正确设置追踪原点与后处理。
- 为 Floor 建立实体碰撞边界,并连接能够识别完整 Unity 工程的代码编辑器。
开始操作前
准备工作
- 第一课已经取得课堂发放的美术起始工程,并把压缩包留在“原始项目”,把解压出的完整工程放在“日常项目”。本课从日常副本开始。
- Unity Hub 中已安装 Unity 2022.3.62f3c1,以及该版本的 Android Build Support、SDK、NDK 和 OpenJDK。
- 电脑已安装代码编辑器及 C#、Unity 支持。后面将从 Unity 打开脚本,确认编辑器能够识别工程。
- 本课完成初始化配置与场景保存即可。第三课学习电脑模拟,第四课连接 PICO 设备;现在无需佩戴头显。
本课学习路线
按照学习模块逐步完成
每个模块都包含理解、跟随操作和独立实践。从全局认识每一层
先看懂项目初始化的完整链路
初始化不是连续点击若干选项,而是把项目、平台、工具、设备和场景按依赖关系连接起来。先理解链路,遇到问题时才能找准位置。为什么三维场景还不能直接进入头显
Assets 中的模型、材质和灯光只描述虚拟世界。Unity 还不知道应用要构建成哪种安装包、PICO 手柄的输入怎样进入场景、哪一个对象代表体验者,也不知道地面能否承载玩家。
本课分三个阶段完成九项任务:先打开正确项目并确定 Android 平台,再连接 XRI、OpenXR 和 PICO,最后建立 XR Origin、相机、地面碰撞与代码编辑环境。每一步都为下一步提供条件。
按箭头阅读:项目与平台先就位,XR 工具链随后连接,最后把玩家、场景和开发工具组合成可继续开发的基础。
手机上可左右滑动;点击图片可以查看完整图初始化链路中的六个关键层级
每一层解决一个不同问题。先判断现象属于哪一层,再回到相应设置位置。
左右滑动表格,可查看完整内容
| 层级 | 主要对象 | 解决的问题 | 完成后的现象 |
|---|---|---|---|
| 项目 | Unity、项目根目录、MainScene | 让正确编辑器打开完整项目 | 场景和资源能够正常载入 |
| 平台 | Android、ASTC | 决定应用采用哪套构建工具 | Android 成为活动平台 |
| 交互 | XRI、Input System、Starter Assets | 把输入解释成移动、射线和抓取 | 输入动作与玩家预制体可用 |
| 设备 | XR 插件管理、OpenXR、PICO 扩展 | 让应用启动 PICO 的 XR 运行能力 | PICO 功能与手柄配置可选 |
| 场景 | XR Origin、头显相机、Floor | 建立体验者和可站立空间 | 只有一套活动玩家与相机 |
| 代码 | 外部编辑器、.sln、.csproj | 让编辑器认识项目脚本和依赖 | 双击脚本可打开完整工程 |
画出自己的初始化链
在纸上画出“项目 → Android → XRI → PICO OpenXR → XR Origin → 场景与代码工具”,并为每个方框写一个可以观察到的完成现象。
- 能够说明 XRI 负责交互行为,OpenXR 负责连接 XR 运行环境。
- 能够说明 XR Origin 是场景中的体验者根对象,不是软件包。
- 能够举例说明上游缺失如何影响下游,例如未启用 OpenXR 时头显追踪不会启动。
建立正确的工程起点
打开完整项目并切换 Android 平台
先让 Unity 打开正确目录和主场景,再把资源处理规则切换到 PICO 独立头显使用的 Android 平台。先认清项目根目录
在 Unity Hub 中选择项目时,应选择同时包含 Assets、Packages 和 ProjectSettings 的目录。Assets 保存场景与资源,Packages 记录工具包,ProjectSettings 保存项目级设置。缺少其中任一部分,都不是本课所需的完整项目。
Unity 2022.3 LTS 中的 LTS 表示长期支持版本。本课使用 2022.3.62f3c1,能够让编辑器界面、软件包和后续操作保持一致。
从解压目录打开 MainScene
- 01
找到完整工程的根目录
开始前已在文件资源管理器打开“日常项目”,解压已经结束。
这样做逐层打开解压目录,停在同时包含 Assets、Packages、ProjectSettings 的这一层。单击地址栏,记住这个文件夹的位置。
完成后应看到
同一窗口里能看到这三个文件夹;它们不是散放在不同目录中。
如果不一致
如果只看到一个同名文件夹,继续进入一层;如果只看到压缩包,先右键选择“全部解压”,不要直接在压缩包里打开资源。
- 02
把日常工程加入 Unity Hub
开始前已经确认根目录,Unity 编辑器尚未打开这份工程。
这样做打开 Unity Hub 的 Projects(项目)页,选择 Add → Add project from disk(从磁盘添加),在选择窗口中选中刚才的根目录。若列表已有同一路径的项目,直接使用这一项。
完成后应看到
项目列表出现这份工程,显示的路径位于“日常项目”,而不是“原始项目”。
如果不一致
不要把 Assets 或 _Scene 子目录当作工程根目录;回到同时包含三个文件夹的位置再添加。
- 03
用指定版本打开并等候处理结束
开始前Unity Hub 列表中的项目路径正确。
这样做选择 Unity 2022.3.62f3c1 打开该项目。首次打开时等待导入资源与编译脚本,直到进度窗口关闭、右下角资源处理停止后再操作。
完成后应看到
Unity 主窗口可以响应点击,Project(项目)窗口列出 Assets,未出现阻止继续使用的红色编译错误。
如果不一致
版本不符时先返回 Hub 选择课程版本;持续红色错误时打开 Window → General → Console(控制台),从第一条错误找原因,不要连续重开项目。
- 04
在项目窗口打开主场景
开始前Unity 已处理完资源;当前可能是其他场景或空场景。
这样做在 Project 窗口展开 Assets → _Scene,双击场景图标对应的 MainScene。也可以在 Project 搜索框输入 MainScene,再选择场景文件;不要双击同名文件夹。

操作提示 观察场景图标与层级顶部的 MainScene。图中是成品工程,额外的玩家和菜单对象不属于此时的起始场景要求。
手机上可左右滑动;点击图片可以查看完整图完成后应看到
Hierarchy(层级)窗口顶部显示 MainScene,下面有博物馆环境和灯光对象。
如果不一致
Project 用来找保存在磁盘中的资源,Hierarchy 列出当前场景里的对象;若没有找到 _Scene,先清空搜索框。
- 05
找到模型并保存当前场景
开始前MainScene 已打开,层级中可以找到 MuseumEnvironment(博物馆环境)。
这样做单击 Scene(场景)标签,再在层级中双击 MuseumEnvironment,让观察视角对准模型。确认模型和材质正常后,按 Ctrl+S 保存 MainScene。
完成后应看到
能看到博物馆模型,不是整片粉色或资源缺失;层级中 MainScene 名称后没有表示未保存的星号。
如果不一致
Scene 只是编辑时的观察窗口。若图标遮挡模型,可在 Gizmos 中减小 3D Icons;若整片粉色,先确认资源导入结束和课程工程的渲染设置完整。
Android 工具链分别做什么
PICO 4 Ultra 独立运行 Android 应用,所以 Unity 需要 Android Build Support。SDK 提供 Android 的应用构建与设备工具;NDK 把 Unity 生成的本机代码编译给头显处理器;OpenJDK 为 Android 构建过程提供 Java 环境。三者通常随 Unity 一起安装。
切换平台时,Unity 会按 Android 规则重新处理纹理、着色器和部分资源,因此首次切换可能较慢。ASTC 是移动设备常用的纹理压缩格式,可以在画面质量和显存占用之间取得平衡。
切换为 Android 与 ASTC
- 01
打开构建设置并选择 Android
开始前MainScene 已保存,当前处于编辑状态,顶部播放按钮没有变蓝。
这样做选择 File → Build Settings(构建设置),单击左侧 Android。留意 Android 行右侧是否已有 Unity 标志:有标志表示它已是当前平台。
完成后应看到
右侧显示 Android 的选项,可以找到 Texture Compression(纹理压缩)。
如果不一致
如果显示 Install with Unity Hub 或无法切换,先关闭 Unity,在 Hub 的 Installs 页找到同一版本,通过 Add modules 补装 Android Build Support 及 SDK、NDK、OpenJDK;安装结束后重新打开日常工程与 MainScene。
- 02
设置纹理压缩并完成平台切换
开始前Build Settings 已选中 Android。
这样做将右侧 Texture Compression 设为 ASTC。若 Android 还没有 Unity 标志,点击 Switch Platform(切换平台),等待资源重新处理;如果已经是 Android 且显示 ASTC,保持现状。

操作提示 这张图的两处设置符合本步要求:Android 行有 Unity 标志,纹理压缩为 ASTC。上方构建场景列表不是本步要修改的内容。
手机上可左右滑动;点击图片可以查看完整图完成后应看到
Android 行右侧出现 Unity 标志,Texture Compression 显示 ASTC,资源处理结束。
如果不一致
只把 Android 行点蓝表示选中了这一行,不代表切换完成。不要点击 Build 或 Build And Run;生成安装包在后面的课程学习。
- 03
重新进入设置确认结果保留
开始前平台切换和资源处理已经完成。
这样做关闭 Build Settings,再通过 File → Build Settings 打开。重新单击 Android,读出当前平台与纹理压缩方式;确认后关闭设置窗口。
完成后应看到
重新打开后,Android 标志与 ASTC 仍然保留,回到 MainScene 可以继续操作。
如果不一致
如果没有保留,确认刚才操作的是同一个日常工程,并等待切换完整结束。
Android 初始化常用名词
这些工具共同完成安装包构建,但职责不同。
左右滑动表格,可查看完整内容
| 名称 | 学生可以怎样理解 | 缺少时的常见现象 |
|---|---|---|
| Android Build Support | Unity 的 Android 构建模块 | Build Settings 中 Android 不可用 |
| SDK | Android 应用与设备工具集合 | 无法生成或安装应用 |
| NDK | 把本机代码编译给头显处理器 | 本机代码构建失败 |
| OpenJDK | Android 构建需要的 Java 环境 | Gradle 构建无法启动 |
| ASTC | 面向移动设备的纹理压缩方式 | 纹理体积与显存占用不符合项目预期 |
独立确认工程入口与平台
关闭设置窗口后,再独立找到项目根目录、MainScene 与 Android 构建设置,并说出每个位置解决的问题。
- 项目根目录同时包含 Assets、Packages 和 ProjectSettings。
- 当前打开的是 Assets/_Scene/MainScene。
- Android 已成为活动平台,纹理压缩方式为 ASTC。
固定交互工具版本
确认 XR Interaction Toolkit 3.1.2
XR Interaction Toolkit(XR 交互工具包,简称 XRI)提供射线、移动、抓取和界面交互组件。本课先把工具版本固定下来。软件包和版本号是什么
Package Manager(包管理器)用于安装和管理 Unity 软件包。打开 Window → Package Manager,把来源切换到 Unity Registry,即可找到 XR Interaction Toolkit。
本课统一使用 XRI 3.1.2。版本号更大不等于现在就应该升级,因为新版可能改变组件字段、输入动作和示例预制体,导致页面步骤与自己的工程不同。
确认版本后再决定是否安装
- 01
找到已经安装的交互工具包
开始前Android 设置窗口已关闭,MainScene 保持打开。
这样做选择 Window → Package Manager(包管理器)。将左上方 Packages 来源切为 In Project(项目内),在右上方搜索 XR Interaction Toolkit,选择对应结果。

操作提示 读取 XR Interaction Toolkit 的 3.1.2 与 Remove。截图来源筛选为 Unity Registry;已安装的同一个包也可以在 In Project 中找到。
手机上可左右滑动;点击图片可以查看完整图完成后应看到
右侧显示工具包名称与版本;3.1.2 配合 Remove(移除)按钮,表示所需版本已经安装。
如果不一致
搜索没有结果时,先清空其他筛选并确认来源为 In Project。Remove 是移除按钮,只用来识别状态,不要点击。
- 02
仅在缺少时添加 3.1.2
开始前已经读出安装状态;若现有版本正是 3.1.2,直接继续下一步。
这样做缺少该包时,点击包管理器左上角加号,选择 Add package by name。Name 填 com.unity.xr.interaction.toolkit,Version 填 3.1.2,点击 Add。
完成后应看到
等待处理后,右侧版本为 3.1.2,安装按钮变为 Remove。
如果不一致
如果已有其他版本,先关闭 Unity 备份日常工程,再使用按名称添加指定 3.1.2;如果出现依赖冲突,记录具体提示并请教师协助,不混用不同版本的 Samples。
- 03
处理输入系统提示并回到软件包
开始前软件包刚完成安装,或 Unity 弹出启用新输入系统的提示。
这样做有重启提示时,先保存 MainScene,再允许启用并重启 Unity;没有提示则继续。重启后重新打开同一工程与 MainScene,等待编译完成,再回到 Package Manager 选中 XRI。
完成后应看到
包管理器仍显示 3.1.2;Console 中没有阻止继续操作的红色编译错误。
如果不一致
如果重启后打开了其他场景,回到 Project → Assets → _Scene 双击 MainScene。
本课统一使用的软件组合
先保持这组版本一致,再进入交互功能开发。
左右滑动表格,可查看完整内容
| 工具 | 版本 | 负责内容 |
|---|---|---|
| Unity | 2022.3.62f3c1 | 编辑、导入与构建项目 |
| XR Interaction Toolkit | 3.1.2 | 射线、移动、抓取与界面交互 |
| Input System | 1.14.0 | 读取并分发头显、手柄和键鼠输入 |
| XR Plug-in Management | 4.5.1 | 管理目标平台的 XR 载入器 |
| OpenXR Plugin | 1.14.3 | 连接 OpenXR 运行环境 |
| PICO OpenXR Plugin | 1.4.1 | 补充 PICO 设备能力与配置 |
解释为什么暂不升级
读出自己的 XRI 版本,并向同学说明:软件包升级前,为什么需要先保留项目副本并确认组件与输入动作的变化。
- 能够读出 XR Interaction Toolkit 3.1.2。
- 能够找到 Documentation 与 Changelog。
- 能够说明软件包版本、示例资源版本必须保持一致。
让 XRI 组件获得输入
导入输入动作与 XR 模拟器
安装 XRI 得到的是交互组件,Starter Assets 则准备了输入动作和玩家预制体,XR Device Simulator 用键盘和鼠标模拟头显与手柄。工具包、输入系统和示例资源怎样配合
Input System(输入系统)把摇杆、按键和头显姿态转换为统一动作;XRI 组件读取这些动作,再执行移动、射线或抓取;Starter Assets 提供已经组织好的动作资源与预制体,减少重复配置。
项目的 Active Input Handling 设为 Both,表示旧输入方式和新输入系统都可以工作;本课的 XR 输入仍由新的 Input System 提供。
导入两组资源,再确认输入设置
- 01
确认 Starter Assets 的导入状态
开始前Package Manager 中已选中 XRI 3.1.2。
这样做单击 Samples(示例资源)标签,找到 Starter Assets。若显示 Import,点击一次并等待处理结束;若显示 Reimport,先跳过导入,到后面的项目资源步骤确认文件。

操作提示 只观察 Starter Assets 这一行。Reimport 表示已导入,下一步去项目窗口找到实际资源。
手机上可左右滑动;点击图片可以查看完整图完成后应看到
该行显示 Reimport(重新导入),表示已经完成过导入。
如果不一致
不要把 Reimport 当成普通的下一步按钮,它可能覆盖你已经改过的示例文件。
- 03
切回项目窗口找到输入动作
开始前两组资源都已经导入,资源处理结束。
这样做关闭 Package Manager。在 Project 清空搜索框,展开 Assets → Samples → XR Interaction Toolkit → 3.1.2 → Starter Assets,单击 XRI Default Input Actions。

操作提示 选中的是磁盘中的输入动作资源。此时只确认文件存在,不需要点击属性中的“设为项目全局输入动作”。
手机上可左右滑动;点击图片可以查看完整图完成后应看到
项目窗口选中了默认输入动作文件,右侧显示 Input Action Asset 的属性。
如果不一致
如果 Reimport 显示已导入但此文件缺失,先确认目录版本和搜索范围;不要为了找文件而覆盖整个 Samples 文件夹。
- 04
找到基础玩家预制体
开始前Project 中已经展开 Starter Assets。
这样做展开其 Prefabs 文件夹,单击 XR Origin (XR Rig)。Prefab(预制体)是一组已经保存好结构与组件的对象模板;现在只选中它。

操作提示 此图说明资源位置与名称。选中资源不等于已经把玩家放入 MainScene;稍后会在层级窗口创建场景实例。
手机上可左右滑动;点击图片可以查看完整图完成后应看到
能选中蓝色预制体图标对应的 XR Origin (XR Rig),Inspector 显示 Prefab Asset。
如果不一致
如果搜索出现 XR Origin Hands,它是手部交互用的另一套模板。本课选择名称不带 Hands 的基础玩家。
- 05
找到下一课需要的模拟器预制体
开始前Project 中可以访问 3.1.2 资源目录。
这样做进入 XR Device Simulator → XRInteractionSimulator,单击 XR Interaction Simulator。可以用 Project 搜索准确名称辅助查找,确认资源来自 3.1.2 目录。

操作提示 蓝色图标对应第三课要使用的 XR Interaction Simulator。本步找到它即可。
手机上可左右滑动;点击图片可以查看完整图完成后应看到
可以指出模拟器预制体的位置;MainScene 中不需要因此新增模拟器对象。
如果不一致
文件夹叫 XRInteractionSimulator,预制体显示名称带空格;不要与旧的 XR Device Simulator 预制体混淆。
- 06
打开输入方式设置
开始前输入动作、基础玩家和模拟器资源都已找到。
这样做选择 Edit → Project Settings(项目设置)→ Player,选 Android 标签,展开 Other Settings(其他设置),在 Configuration 中找到 Active Input Handling(启用的输入方式)。也可使用设置窗口右上角搜索此名称。
完成后应看到
右侧可见 Active Input Handling 的下拉框。
如果不一致
修改属性前先确认选中了 Player;找不到字段时展开 Other Settings,再向下滚动。
- 07
设置 Both,并在重启后确认
开始前Player 中已经找到 Active Input Handling。
这样做本课选择 Both,兼容工程中的新旧输入方式;已经为 Both 时不用改。若提示重启,先保存并允许重启。重新打开 MainScene 和该设置页,读出保存后的值,然后清空设置搜索框。

操作提示 只观察 Active Input Handling 一行。截图中其他 Android 构建参数属于成品工程,不要求在此照抄。
手机上可左右滑动;点击图片可以查看完整图完成后应看到
重新进入后 Active Input Handling 仍为 Both,资源处理结束。
如果不一致
新输入系统负责本课 XR 输入。Both 不代表两套玩家,也不会自动把输入资源放进场景。
两组资源分别提供什么
记住包管理器中的名称和项目窗口中的实际文件名称。
左右滑动表格,可查看完整内容
| 资源 | 主要内容 | 本课要找到的文件 | 用途 |
|---|---|---|---|
| Starter Assets | 默认输入动作与玩家预制体 | XRI Default Input Actions、XR Origin (XR Rig) | 连接头显、手柄和 XRI 组件 |
| XR Device Simulator | 键鼠模拟输入和预制体 | XR Interaction Simulator | 在电脑中模拟头显与左右手柄 |
沿输入链找到三个对象
从手柄输入出发,依次指出 Input System、XRI Default Input Actions 和 XR Origin 预制体怎样把输入送到场景。
- 在 Assets/Samples/XR Interaction Toolkit/3.1.2/Starter Assets 中找到默认输入动作。
- 在 Prefabs 中找到 XR Origin (XR Rig)。
- 在 XR Device Simulator 资源中找到 XR Interaction Simulator。
补充 PICO 设备能力
确认 PICO OpenXR 扩展位于项目中
Unity 的 OpenXR 软件包提供通用接口,PICO OpenXR Plugin 再补充 PICO 4 Ultra 所需的功能组和控制器配置。先有扩展,设置页中才会出现 PICO 选项。先理解工具链中的位置
PICO 4 Ultra 把头显姿态和手柄输入交给 PICO OpenXR 扩展,扩展通过 OpenXR 接入 Unity,再由 Input System 与 XRI 把输入转成移动、射线和抓取。场景中的 XR Origin 最终接收这些结果。
PICO OpenXR Plugin 1.4.1 是本课使用的项目内软件包。它的 package.json 是软件包清单,记录名称、版本和依赖;只有完整文件夹才能被 Unity 正确识别。
从左向右读:设备产生数据,OpenXR 链路把数据交给 Unity,XRI 解释成交互,XR Origin 和场景对象呈现最终行为。
手机上可左右滑动;点击图片可以查看完整图项目内软件包为什么更适合课堂工程
把依赖跟随项目保存,换一台电脑时更容易保持一致。
左右滑动表格,可查看完整内容
| 放置方式 | Unity 怎样找到它 | 项目移动后的情况 | 本课做法 |
|---|---|---|---|
| 项目外部引用 | 记录另一处磁盘路径 | 路径变化后可能失效 | 不作为起始项目的默认方式 |
| 放入项目 Packages | 从项目内部读取 package.json | 软件包随项目一起移动 | 使用此方式 |
先确认项目内的 PICO 扩展
- 01
在项目根目录确认完整软件包
开始前已从 Unity 回到文件资源管理器,打开的是日常工程根目录。
这样做进入 Packages,寻找 PICO OpenXR 扩展文件夹。用文本编辑器打开其中的 package.json,只读取 name 与 version;本课应为 com.unity.xr.openxr.picoxr 和 1.4.1。
完成后应看到
可以找到软件包清单及同目录下的完整资源文件,版本读数为 1.4.1。
如果不一致
文件夹名称可能含旧的发行编号,以 package.json 的 version 为准;不要把 Unity 安装目录中的 Packages 当成工程目录。
- 02
仅在缺少扩展时补齐完整文件夹
开始前已确认该包不存在;如果已经存在正确版本,跳过此步。
这样做保存 MainScene 并退出 Unity。把课堂发放的 PICO OpenXR Plugin 1.4.1 完整文件夹复制到日常工程的 Packages 里面,确保 package.json 直接位于这个软件包文件夹内。
完成后应看到
工程根目录的 Packages 内有完整 PICO 软件包,未只复制一个 package.json,也没有额外多套一层同名目录。
如果不一致
已有包时不要重复覆盖;文件夹不完整或课堂资源版本不符时,先向教师取得匹配的完整扩展,再继续。
- 03
返回 Unity 确认软件包已被识别
开始前软件包已存在,或已经完成复制。
这样做在 Hub 重新打开日常工程,等待软件包解析与编译结束;打开 MainScene。进入 Package Manager,切到 In Project,搜索 PICO,选择 PICO OpenXR Plugin 并读出 1.4.1。
完成后应看到
项目内软件包列表可找到 PICO OpenXR Plugin 1.4.1,Console 没有红色编译错误。
如果不一致
如果列表无此包,回到文件资源管理器确认 package.json 层级与包内容;不要先去勾选其他 XR 载入器代替它。
让软件包能够随项目移动
在文件资源管理器中找到项目 Packages,并向同学说明 package.json 与完整软件包文件夹的作用。
- 能够区分项目根目录中的 Packages 与 Unity 编辑器安装目录。
- 能够读出 PICO OpenXR Plugin 1.4.1。
- 返回 Unity 后,软件包可以识别且没有持续出现的红色编译错误。
让应用真正启动头显能力
启用 Android OpenXR 与 PICO 功能
软件包安装完成后,还要在 Android 平台启用 OpenXR 载入器,并声明 PICO 4 Ultra 的功能组和手柄配置。五个名称各自负责什么
XR Plug-in Management(XR 插件管理)决定应用启动时使用哪个 XR 载入器。载入器可以理解为“真正启动 XR 运行环境的模块”:只安装 OpenXR 软件包但不启用载入器,头显追踪不会自动工作。
OpenXR 提供通用 XR 接口;PICO Support 与 PICO OpenXR Features 以 Feature Group(功能组)的形式打开一组 PICO 能力;PICO4 Ultra Touch Controller Profile 属于 Controller Profile(控制器配置),它描述这类手柄向 OpenXR 提供哪些标准输入。控制器配置不等于课程中的 XRI Default Input Actions,前者描述设备,后者把输入组织成课程动作。
从设备到交互的职责分工
缺少任何一层,都可能表现为头显或手柄没有反应。
左右滑动表格,可查看完整内容
| 层 | 本课选择 | 主要职责 | 容易混淆的地方 |
|---|---|---|---|
| XR 载入器 | Android 下的 OpenXR | 应用启动时连接 XR 运行环境 | 安装包不等于已经启用载入器 |
| Feature Group | PICO Support、PICO OpenXR Features | 成组启用 PICO 设备能力 | 它不是场景中的组件 |
| Controller Profile | PICO4 Ultra Touch Controller Profile | 声明 PICO 4 Ultra 手柄的标准输入 | 它不负责移动逻辑 |
| Input System | XRI 输入动作引用 | 把设备输入分发给动作 | 它不会自动创建玩家 |
| XRI | 3.1.2 交互组件 | 把动作变成移动、射线和抓取 | 它不是设备驱动 |
分别完成载入器、手柄与功能设置
- 01
选中 Android 的 XR 载入器
开始前Unity 已识别 PICO 扩展,MainScene 打开。
这样做选择 Edit → Project Settings → XR Plug-in Management,点击右上方带 Android 机器人图标的标签。勾选 OpenXR 与其下的 PICO XR feature group;已经勾选则保留。等待处理结束。

操作提示 先看 Android 标签,再看 OpenXR 与 PICO 功能组的勾选状态。两个位置需要同时对应。
手机上可左右滑动;点击图片可以查看完整图完成后应看到
在 Android 标签下,OpenXR 与 PICO XR feature group 均被勾选。
如果不一致
开发电脑是 Windows,但这里必须选 Android。电脑端运行设置会在第三、四课结合使用场景说明。
- 02
在 OpenXR 子页添加手柄配置
开始前Android 的 OpenXR 已启用,资源处理结束。
这样做点击左侧 XR Plug-in Management 下的 OpenXR,再选 Android 标签。在 Enabled Interaction Profiles 列表中找 PICO4 Ultra Touch Controller Profile;缺少时点列表右下角加号,选择这一项。

操作提示 本课关注 PICO4 Ultra Touch Controller Profile。图中 Hand Interaction Profile 是成品后续手部功能使用的配置。
手机上可左右滑动;点击图片可以查看完整图完成后应看到
列表中出现 PICO4 Ultra Touch Controller Profile,已有时不重复添加。
如果不一致
若加号列表里没有该项,返回上一模块确认 PICO OpenXR Plugin 版本和编译结果。
- 04
阅读设置提示,再重新进入确认
开始前Android 载入器、手柄配置和 PICO 功能都已设置。
这样做点击左侧 Project Validation(项目设置提示),选 Android,逐条阅读问题。处理红色且阻止继续使用的问题,再回到刚才两个设置页面确认勾选保留;最后关闭设置窗口。
完成后应看到
重新进入 Android 页面后,OpenXR、PICO 功能和手柄配置都仍然存在,没有阻止继续使用的红色配置问题。
如果不一致
不要不看说明就反复点击 Fix All。遇到需要改变其他软件包版本的提示,记录完整内容并请教师协助判断。
沿设置链说出三个完成现象
从 Android 平台开始,依次说明载入器、PICO 功能组和控制器配置的作用,并在界面中指出它们的位置。
- Android 标签下的 OpenXR 在重新进入页面后仍然被选中。
- PICO 功能组与 PICO4 Ultra Touch Controller Profile 可见。
- Project Validation 中没有阻止运行的红色问题;黄色建议已阅读并理解。
把现实动作映射进场景
建立 XR Origin 与唯一的头显相机
设备链路准备完成后,需要在 MainScene 中加入一个代表体验者的 XR Origin,并让它下面的相机成为唯一活动的主相机。XR Origin 为什么是玩家根对象
XR Origin(XR 原点)是体验者在虚拟世界中的根对象。它的子对象通常包括头显相机、左右控制器与移动系统。移动 XR Origin 会整体移动这套玩家;现实中的头部转动和位移,只改变其子相机的局部姿态。
头显使用 6DoF(六自由度)追踪:前后、左右、上下三种位移,加上俯仰、偏航、翻滚三种旋转。Tracked Pose Driver(追踪姿态驱动器)把这些姿态持续写入相机。
从预制体建立一套活动玩家
- 01
先辨认当前场景中的玩家
开始前MainScene 已打开,顶部播放按钮没有变蓝。
这样做在 Hierarchy 清空搜索框,查看是否已有 XR Origin。只有美术资源的起始工程通常还没有它;如果已经有,展开其层级,确认来源与基础预制体一致,然后继续检查已有对象。

操作提示 本图用于读懂基础玩家的父子结构。图中整套基础玩家呈灰色,说明它在成品中已停用;本课应让自己的一套基础玩家保持活动。
手机上可左右滑动;点击图片可以查看完整图完成后应看到
知道场景里是缺少玩家,还是已经有一套需要继续配置的玩家。
如果不一致
不要仅根据名称判断可用性:还要看子对象和组件。成品图中的灰色基础玩家已停用,另有后续手部玩家;你的第二课工程不需要建立这两套。
- 02
只在缺少玩家时拖入基础预制体
开始前已经确认 MainScene 中没有基础玩家;已有正确玩家则跳过拖入。
这样做在 Project 找到 Starter Assets → Prefabs → XR Origin (XR Rig),按住它拖到 Hierarchy 中 MainScene 下方的空白处,再松开。不要拖到 MuseumEnvironment 的名称上。
完成后应看到
Hierarchy 多出一个顶层 XR Origin (XR Rig),与 MuseumEnvironment 同级,且没有再拖出带 (1) 的重复对象。
如果不一致
如果它缩进在 MuseumEnvironment 下面,把它拖回层级空白处;若重复添加,确认哪个是刚新增且未配置的副本,再移除那个副本。
- 03
展开并确认玩家对象引用
开始前Hierarchy 已有一套基础 XR Origin,选中的是场景里的根对象,而不是 Project 里的模板。
这样做点击根对象左侧三角,展开 Camera Offset(相机偏移对象),找到 Main Camera 与左右控制器;同级应有 Locomotion(移动系统)。在根对象 Inspector 的 XR Origin 组件中核对三个引用:Origin Base GameObject 指根对象本身,Camera Floor Offset GameObject 指 Camera Offset,Camera 指其下的 Main Camera。
完成后应看到
三个引用都不是 None 或 Missing,分别指向这套玩家自己的根对象、偏移对象和相机。
如果不一致
引用缺失时,从 Hierarchy 把对应对象拖到属性框中;不要误拖场景原有的独立 Main Camera。
- 04
设置地面追踪方式与输入动作
开始前仍然选中 Hierarchy 中的 XR Origin 根对象。
这样做将 XR Origin 组件的 Tracking Origin Mode 设为 Floor。向下找到 Input Action Manager(输入动作管理器),展开 Action Assets,确认其中引用 XRI Default Input Actions;缺少时增加一项并从 Project 拖入该动作资源。

操作提示 只对照引用、Floor 和默认输入动作三个位置。本图取自成品中停用的基础玩家,不能用它证明自己的玩家已活动。
手机上可左右滑动;点击图片可以查看完整图完成后应看到
Tracking Origin Mode 显示 Floor;输入动作列表至少包含正确的默认动作资源,没有 Missing 引用。
如果不一致
Floor 在这里表示现实地面高度基准。它和博物馆里的 Floor 地面对象同名,但不能替地面添加碰撞。
- 05
将玩家根对象放到展馆入口的空地
开始前玩家层级和输入引用完整,选中的仍是根对象。
这样做在 Scene 窗口观察入口,使用移动工具把整套 XR Origin 放到馆内可站立的空地,保持 Scale 为 1、1、1。以实际地面高度确定 Y;地面位于世界 Y=0 时,以这个高度作为参考。
完成后应看到
玩家根对象位于馆内,起点没有埋在地面下,也不与门框、墙体或展台重叠。
如果不一致
移动整套玩家时调整根对象,不单独拖动其 Main Camera。下一模块会再结合碰撞边界观察起点。
- 06
确认新相机,再停用旧的独立相机
开始前基础玩家已经放好,准备交接画面和声音。
这样做先分别选中 XR Origin 根对象与 Camera Offset,在 Inspector 顶部确认名称左侧的活动勾选已开启。再选其下的 Main Camera,启用对象及 Camera、Audio Listener、Tracked Pose Driver (Input System) 组件,确认 Tag 为 MainCamera。最后选场景原有、位于玩家外面的独立 Main Camera,取消它名称左侧的活动勾选,并将 Tag 改为 Untagged。
完成后应看到
玩家根对象及其父对象均为活动状态;原有独立相机变灰。全场景只剩一台活动主相机和一个活动声音监听器。
如果不一致
只看子相机自己的勾选还不够:父对象停用时它也不会活动。无需照成品创建 Camera0 这样的自定义标签。
- 07
核对头部姿态引用
开始前已重新选中基础玩家下面的 Main Camera。
这样做在 Tracked Pose Driver 中确认 Tracking Type 为 Rotation And Position(旋转与位置),Update Type 为 Update And Before Render,表示每帧(一幅画面)的逻辑更新时和绘制前都读取姿态。Position Input、Rotation Input、Tracking State Input 分别引用 XRI Head 的 Position、Rotation、Tracking State。

操作提示 观察组件及动作引用。图中相机所在的基础玩家在成品中停用,第二课需要同时确认自己的父对象处于活动状态。
手机上可左右滑动;点击图片可以查看完整图完成后应看到
姿态输入都有对应动作引用,Audio Listener 组件已启用;Hierarchy 中玩家与相机都不是灰色。
如果不一致
若这些引用缺失,先确认使用的是 3.1.2 的基础玩家预制体,再从默认动作资源中选择同名输入;不要额外加第二个姿态驱动器。
玩家层级中的关键对象
父子层级让玩家整体移动与真实头部运动同时成立。
左右滑动表格,可查看完整内容
| 对象或设置 | 作用 | 本课状态 | 不正确时的现象 |
|---|---|---|---|
| XR Origin | 整体承载头显、手柄和移动系统 | 只保留一套活动对象 | 出现两套输入或两套玩家 |
| Tracking Origin Mode | 决定现实追踪高度基准 | Floor | 现实地面与虚拟起点高度不协调 |
| MainCamera 标签 | 让脚本找到活动主相机 | 只给 XR 相机使用 | 依赖主相机的功能找不到目标 |
| Audio Listener | 从体验者位置接收声音 | 全场景只有一个活动实例 | 控制台提示多个声音监听器 |
| Tracked Pose Driver | 把头显位置与旋转写入相机 | 位置与旋转都启用 | 头动时画面不随动 |
后处理与抗锯齿是两组设置
Post Processing(后处理)是在基础画面渲染后应用色彩、亮度等效果。场景中已有后处理对象时,活动 XR 相机仍要允许接收后处理,效果才会进入头显画面。
本课把相机的后处理抗锯齿保持为 No Anti-aliasing。它只表示不在这台相机上执行 FXAA、SMAA 等屏幕后处理抗锯齿,不代表项目完全没有抗锯齿;本项目 High 质量下的 URP 仍使用 4x MSAA。MSAA(多重采样抗锯齿)由 URP 质量设置单独控制,后续应结合 PICO 实机清晰度与运行流畅度选择。
完成相机画面设置并保存
- 01
打开相机的后处理
开始前Hierarchy 中选中 XR Origin → Camera Offset → Main Camera。
这样做在 Inspector 的 Camera 组件展开 Rendering(渲染),勾选 Post Processing(后处理),将 Anti-aliasing 设为 No Anti-aliasing。

操作提示 只对照 MainCamera 标签和 Rendering 中的两项设置。图示提供属性位置,不表示第二课已完成设备运行。
手机上可左右滑动;点击图片可以查看完整图完成后应看到
Post Processing 已勾选,相机的 Anti-aliasing 显示 No Anti-aliasing。
如果不一致
不要在场景原有的独立相机上改此项。相机后处理抗锯齿与 URP 的 MSAA 分属不同位置,本步只改相机设置。
- 02
保存并确认玩家唯一
开始前新相机属性完整,原有独立相机已停用。
这样做清空 Hierarchy 搜索框,沿层级查看活动玩家、相机与声音监听器的数量。确认只有一套活动玩家、一台活动主相机、一个活动 Audio Listener 后,按 Ctrl+S 保存 MainScene。
完成后应看到
MainScene 名称后的未保存星号消失,旧相机为灰色,新玩家根对象与相机活动且引用完整。
如果不一致
如果已有其他相机或声音监听器,逐个查看其所属对象与活动状态。不要以“没有报错”代替数量确认;此时还不需要进入播放模式。
沿父子层级解释一次头部转动
从 PICO 头显姿态开始,指出 Tracked Pose Driver、Main Camera 和 XR Origin 的关系,并说明为什么旧相机要在新相机就位后再停用。
- 场景中只有一套活动 XR Origin。
- 只有 XR 相机使用 MainCamera 标签并启用 Audio Listener。
- XR 相机已启用 Post Processing,能够区分相机后处理抗锯齿与 URP 的 MSAA。
让玩家站在虚拟地面上
为 Floor 建立实体碰撞边界
追踪原点只决定现实高度基准,真正承载玩家的是虚拟地面的实体碰撞体。本模块只完成 Floor,不提前配置场景漫游功能。看得见的模型不等于碰得到的边界
Mesh Renderer 负责把地面外观画出来,Collider(碰撞体)负责提供物理边界。没有碰撞体时,移动系统无法把地面当作实体表面,启用重力的玩家可能继续下落。
Box Collider 用长方体近似地面范围。Is Trigger(是否为触发器)关闭时,它形成实体阻挡;开启后主要报告进入和离开事件,不再承担普通实体阻挡。本课无需给 XR Origin 额外添加 Rigidbody,XRI 的移动系统会配合玩家的 Character Controller 与场景碰撞体限制移动。
让碰撞范围贴合可站立地面
- 01
选中地面,先找已有碰撞体
开始前MainScene 已保存,Hierarchy 搜索框为空。
这样做展开 MuseumEnvironment,单击 Floor(地面)。在 Inspector 向下找 Box Collider(盒状碰撞体);如果已经有,继续使用这一项。只有缺少时,才点 Add Component 搜索 Box Collider 并添加一次。
完成后应看到
选中的是 Floor;Inspector 能找到一项启用的 Box Collider。
如果不一致
不要给 MuseumEnvironment 根对象添加一个把整个展馆包住的大碰撞盒。若原地面已有其他合适的实体碰撞体,先确认它的用途,避免重叠添加。
- 03
在场景中观察并调整碰撞范围
开始前仍选中 Floor,并已确认 Is Trigger 关闭。
这样做单击 Box Collider 的 Edit Collider。将鼠标移到 Scene 窗口,按 F 聚焦所选地面。通过右上角方向指示器切换俯视和侧视,拖动绿色控制点,或微调 Center(中心)和 Size(大小),让范围贴合实际可站立地面。

操作提示 绿色线框帮助定位地面碰撞范围。此成品视角只说明观察位置;还要切到俯视、侧视确认自己的覆盖范围和厚度。
手机上可左右滑动;点击图片可以查看完整图完成后应看到
俯视时范围覆盖地板,侧视时碰撞体上表面贴合地板表面,具有合理厚度,没有悬空或埋到地板下。
如果不一致
这些尺寸沿对象自身的坐标轴计算;地面若已经旋转,厚度不一定是 Size Y。先看绿色边界再调值,不照抄图片数值。
- 04
退出范围编辑,再确认玩家起点
开始前地面边界已调好,当前仍处于 Edit Collider 状态。
这样做再点一次 Edit Collider 退出;在 Hierarchy 选 XR Origin 根对象,回到 Scene 观察其起点和 Character Controller(角色控制器)的轮廓。必要时移动根对象,让玩家脚部位于碰撞体上表面,不嵌入墙体或展台。
完成后应看到
玩家起点落在地面可站立范围内,角色轮廓没有与地面、墙体明显相交。
如果不一致
看不清玩家时先选根对象再在 Scene 按 F;不要把虚拟相机的高度当成地面碰撞高度。
- 05
保存地面与玩家位置
开始前碰撞范围与玩家起点已经对应。
这样做按 Ctrl+S 保存 MainScene。再次选择 Floor,确认碰撞体与 Is Trigger 状态保留。
完成后应看到
MainScene 没有未保存星号,Floor 保留正确的实体碰撞边界。
如果不一致
本课在编辑状态确认几何位置即可。第三课再结合电脑模拟观察运行中的表现。
追踪地面、碰撞体与瞬移区域的区别
三个名称都与“地面”有关,但解决的是不同问题。
左右滑动表格,可查看完整内容
| 对象或设置 | 负责内容 | 本课做法 | 不能代替什么 |
|---|---|---|---|
| Tracking Origin Mode = Floor | 以现实地面为追踪高度基准 | 在 XR Origin 上设置 | 不能生成虚拟碰撞边界 |
| Box Collider | 提供承载和阻挡玩家的实体范围 | 覆盖 Floor,关闭 Is Trigger | 不能声明瞬移落点 |
| Is Trigger | 切换为事件触发范围 | 保持关闭 | 开启后不能作为普通实体地面 |
| Teleportation Area | 声明射线可以选择的瞬移表面 | 本课只认识职责 | 不能代替实体碰撞体 |
用三个角度确认地面边界
分别从俯视、侧视和玩家起点观察 Floor 的碰撞范围,完成后用自己的话解释“看得见”和“碰得到”的区别。
- Box Collider 覆盖可站立地面,没有明显悬空或下陷。
- Is Trigger 保持关闭,XR Origin 起点位于实体地面上方。
- 能够说明 Teleportation Area 不负责防止玩家下落。
把所有设置串成一条链
连接代码编辑器并完成本课成果
最后让代码编辑器认识完整 Unity 工程,再沿初始化链确认每一层都能为后续交互开发提供条件。为什么双击脚本还需要项目文件
External Script Editor(外部脚本编辑器)决定 Unity 用哪个程序打开 C# 文件。.sln 是整个解决方案的入口,.csproj 记录项目脚本、Unity 程序集和软件包引用。它们是代码编辑器认识完整工程的索引文件,不是学生手工编写的业务代码。
只有编辑器打开完整解决方案并安装 C# 与 Unity 支持后,UnityEngine 类型、项目脚本和软件包代码才能提供补全、跳转与错误提示。单独打开一个 .cs 文件通常得不到完整上下文。
从 Unity 打开完整代码工程
- 01
在偏好设置中选择代码编辑器
开始前Unity 当前打开日常工程,已保存 MainScene。
这样做选择 Edit → Preferences(偏好设置)→ External Tools(外部工具)。在 External Script Editor 下拉框选择已安装、具备 C# 与 Unity 支持的代码编辑器。
完成后应看到
下拉框显示具体程序名称,例如 Visual Studio Code,而不是 Open by file extension。
如果不一致
列表没有所需程序时,先安装课程使用的编辑器及其 C#、Unity 支持,再回来选择;不要只把 .cs 文件关联到普通文本编辑器。
- 02
生成代码编辑器需要的项目文件
开始前仍在 External Tools,外部脚本编辑器已选定。
这样做在 Generate .csproj files for 中保留 Embedded packages、Local packages、Registry packages 等需要的来源,点击 Regenerate project files(重新生成项目文件),等处理结束。

操作提示 依次观察编辑器名称、软件包来源和 Regenerate project files。此图只表示 Unity 端的连接设置;还需要下一步在编辑器中确认代码识别。
手机上可左右滑动;点击图片可以查看完整图完成后应看到
工程根目录生成或更新了 .sln 与 .csproj;代码编辑器可以通过这些文件了解脚本和依赖关系。
如果不一致
Embedded packages 是放在工程内的包,Local packages 是本地引用包,Registry packages 是从软件包注册表安装的包。PICO 放在工程中时,也要纳入项目文件。
- 03
从 Unity 双击一个完整脚本
开始前项目文件已生成,当前没有待保存的场景改动。
这样做关闭 Preferences,回到 Project。在导入的 Starter Assets 的 Scripts 中选一个现有 C# 脚本并双击。允许编辑器打开当前工程,等项目索引完成;只阅读现有脚本,不修改。
完成后应看到
编辑器显示当前工程的文件树或解决方案,包含 Assets;UnityEngine 等 Unity 名称能够被识别,而不是整页出现“找不到类型”。
如果不一致
不要在文件资源管理器只打开单个 .cs 文件。若编辑器只显示孤立文件,打开日常工程根目录或该工程的 .sln,再等索引结束。
- 04
确认 Unity 类型和项目代码可以跳转
开始前代码编辑器已完成工程加载,脚本包含 using UnityEngine 与 Unity 类型。
这样做把鼠标移到脚本中的 MonoBehaviour、Transform 等 Unity 类型上,观察是否出现类型说明;使用“转到定义”查看其中一个类型。再从编辑器文件树打开同一工程的另一份脚本。
完成后应看到
能够看到 Unity 类型说明或定义,并能从工程文件树找到当前项目脚本;关闭脚本后工程文件仍完整可见。
如果不一致
若 Unity 编译正常但编辑器无法识别类型,确认编辑器的 C# 与 Unity 支持已启用,然后回 Unity 重新生成项目文件并重新打开工程。不要为了消除编辑器提示而删除 using UnityEngine。
- 05
回到 Unity 留下本课成果
开始前代码编辑器能识别完整工程,未修改现有脚本。
这样做返回 Unity,再打开 MainScene,按 Ctrl+S 保存场景,并选择 File → Save Project 保存项目设置。等资源处理结束后,按下方成果清单逐项确认。
完成后应看到
MainScene 没有未保存星号,配置已保留,Console 没有红色编译错误。
如果不一致
若仍在某个设置窗口,先关闭它回到主窗口再保存。第二课不要求操纵模拟器,也不要求头显运行成功。
本课成果清单
下面七项配置已完成,并保存 MainScene 与项目设置,就达到第二课的结束状态。
左右滑动表格,可查看完整内容
| 成果 | 应达到的状态 | 学生能观察到什么 |
|---|---|---|
| 完整项目 | Unity 2022.3.62f3c1 打开 MainScene | 场景资源与层级正常载入 |
| Android 平台 | Android 为活动平台,纹理压缩为 ASTC | Android 构建选项可以使用 |
| 交互工具 | XRI 3.1.2、Starter Assets 与模拟器资源可用 | 能找到输入动作、XR Origin 和 XR Interaction Simulator |
| PICO 设备链 | OpenXR、PICO 功能与 PICO 4 Ultra 控制器配置可见 | 重新进入设置页后选择仍然保留 |
| 玩家与相机 | 一套活动 XR Origin、一台活动主相机、一个 Audio Listener | 在编辑状态确认层级、活动状态、相机引用和后处理 |
| 实体地面 | Floor 的 Box Collider 范围正确且不是触发器 | 玩家起点位于可承载地面上方 |
| 代码环境 | 外部编辑器打开 .sln,并读取 .csproj | Unity 类型与项目脚本可以补全和跳转 |
初始化常见现象与处理方法
先判断现象属于哪一层,再只处理相关设置。
左右滑动表格,可查看完整内容
| 现象 | 可能原因 | 处理方法 |
|---|---|---|
| Android 不可选择 | 编辑器缺少 Android Build Support | 在 Unity Hub 为同一编辑器补装 Android 模块与工具链 |
| Samples 显示 Reimport | 资源已经导入 | 不要重复覆盖,到 Assets/Samples 找到实际文件 |
| 没有 PICO 功能项 | PICO OpenXR 扩展未被 Unity 识别 | 确认完整包和 package.json 位于项目 Packages |
| 重新进入设置后 OpenXR 未选中 | Android 载入器设置没有保存 | 回到 Android 标签重新启用并等待资源处理结束 |
| 画面没有场景色彩效果 | 活动 XR 相机未接收后处理 | 在相机 Rendering 中启用 Post Processing |
| 代码没有补全 | 编辑器未打开完整解决方案或索引过期 | 重新选择编辑器并生成项目文件 |
| 层级中出现两套 XR Origin | 把已经存在的玩家又拖入一次 | 根据活动状态和子对象确认保留的一套,不重复创建玩家 |
| 地面边界与模型不贴合 | 把局部坐标轴当成世界坐标,或只看了正面 | 选 Floor,进入 Edit Collider,从俯视和侧面调整范围 |
完成自己的项目初始化
从文件资源管理器中的日常工程开始,重新找到 MainScene 与七项配置所在位置,读出它们的状态,最后保存场景与项目。
- 能指出项目、平台、交互工具、PICO 设备支持、玩家、地面与代码环境各自的位置。
- MainScene 已保存,Console 没有红色编译错误,只有一套活动玩家、一台活动主相机和一个活动声音监听器。
- 本课只完成初始化配置与场景保存。第三课操作电脑模拟器,第四课连接头显确认设备运行。
把知识变成作品
本课练习
请按顺序完成以下任务,并保存自己的学习成果。- 01
使用第一课准备的日常副本,独立找到根目录并打开 MainScene,确认美术资源正常显示、资源处理结束。
- 02
重新进入设置窗口,确认 Android、ASTC、XRI 3.1.2、两组 Samples、Both、PICO OpenXR Plugin 与 Android 下的 PICO 功能均已保留。
- 03
在 MainScene 中指出唯一活动的玩家、主相机和声音监听器,并从俯视和侧视说明地面碰撞与玩家起点的关系。
- 04
从 Unity 双击现有脚本,确认代码编辑器能够识别 Unity 类型和工程文件。
- 05
保存 MainScene 与项目设置;本课只完成初始化配置与场景保存,第三课继续电脑模拟,第四课继续头显连接。
需要进一步确认时
本课参考资料
打开官方文档,核对软件设置、组件参数和设备说明。把本课进度保存下来
登录后可以保存浏览内容、有效学习时间、完成状态和答题参与记录。


