第 04 课
使用 PICO 实时预览测试项目
实时预览由电脑运行 Unity 场景,将画面传入头显,再把头部姿态和手柄动作传回电脑。本课依次经过“设备准备 → 已连接 → 软件配置 → 串流与画面 → 动作体验 → 退出并恢复”。MainScene 先确认博物馆画面和设备姿态,完整交互在 DemoScene 中练习;在头显本机安装运行应用留到后面的课程。
把 Unity 画面传入 PICO,并用真实设备完成体验
从第三课保存的 MainScene 出发,依次准备头显、确认电脑连接、切换输入方式,再进入实时预览;完成后退出运行并恢复键鼠模拟。
学完你将能够
学习目标
- 区分键鼠模拟、PICO 实时预览和安装包实机运行各自能确认的内容。
- 解释 Unity、PICO Live Preview、PDC、串流服务和头显之间的双向数据链路。
- 完成开发者模式、USB 调试、电脑授权和数据线准备。
- 读懂 PDC 的已连接、串流中与连接异常状态。
- 确认项目内嵌入式 Live Preview 软件包及 package.json。
- 在电脑平台启用 PICO Live Preview,关闭 XR 交互模拟器,同时保留安卓 OpenXR。
- 在 MainScene 确认画面和设备姿态,在 DemoScene 完成移动、转身、瞬移与抓取,结束后恢复键鼠并保存主场景。
- 按照物理连接、调试授权、PDC、Unity 软件包、加载器和场景的顺序定位问题。
开始操作前
准备工作
- 打开第三课结束时保存的 MainScene,退出 Play(运行模式),确认没有红色编译错误。保留已经导入的模拟器资源。
- 准备 PICO 4 Ultra、左右控制器、支持数据传输的 USB 线缆和 Windows 电脑;先为头显与控制器充足电,留出可以安全转头和抬手的空间。
- 电脑安装 PICO Developer Center(简称 PDC,PICO 开发者中心)及其串流服务。本课先确认连接,再启动 Unity 运行。
- 课程工程使用 Unity 2022.3.62f3c1、XR Interaction Toolkit 3.1.2 和 PICO Live Preview 1.0.5。已有软件包时先确认名称与版本,避免重复安装。
- 第三课的键鼠模拟器目前可以自动创建。本课会暂时关闭它,让真实头显接管输入,最后再恢复键鼠方式。
本课学习路线
按照学习模块逐步完成
每个模块都包含理解、跟随操作和独立实践。先知道它做了什么,也知道它没有做什么
理解实时预览的完整工作链路
实时预览不是把应用安装到头显,而是让 Unity 编辑器与 PICO 4 Ultra 形成双向通道。先分清三种测试方式,后面的每个状态才有明确含义。三种测试方式解决不同问题
XR 交互模拟器用键盘和鼠标生成虚拟头显与控制器,适合快速确认输入映射、移动、射线和抓取逻辑;它不能反映 PICO 的追踪、空间尺度、佩戴体验和设备延迟。
PICO 实时预览运行的是 Unity 编辑器中的场景。电脑把渲染画面送到头显,PICO 头显和控制器再把姿态、摇杆、扳机与按钮数据送回 Unity。它能确认设备输入和空间感受,但不能完整确认安卓权限、安装、设备端性能、发热和脱离电脑后的运行。
最终安装包在 PICO 头显本机运行,才是发布前确认安卓运行环境和设备表现的依据。可靠路线是先用模拟器确认逻辑,再用实时预览确认真机输入,最后用安装包确认设备端结果。
三种测试方式的边界
选择方式前先确定本次要回答的问题,不用一种方式代替所有测试。
左右滑动表格,可查看完整内容
| 方式 | 场景运行位置 | 输入来源 | 最适合确认 | 仍需另行确认 |
|---|---|---|---|---|
| 键鼠模拟 | Unity 编辑器 | 虚拟头显与控制器 | 输入映射和交互逻辑 | PICO 追踪、延迟与佩戴体验 |
| PICO 实时预览 | Unity 编辑器 | PICO 头显与控制器 | 头显姿态、手柄输入和空间体验 | 安卓权限、最终安装和设备端性能 |
| 安装包实机运行 | PICO 头显 | PICO 头显与控制器 | 最终启动、权限、性能与发热 | 编辑器中的即时修改 |
蓝色箭头把 Unity 画面送往头显,紫色箭头把头显姿态与控制器输入送回 Unity;下方继续展示输入进入 Unity 后的处理顺序。
手机上可左右滑动;点击图片可以查看完整图输入进入 Unity 后发生了什么
PXR_PTLoader 是电脑端实时预览加载器。加载器可以理解为 Unity 启动 XR 时连接相应运行环境的入口。它把 PICO 实时预览设备接入 Unity 输入系统。
输入系统把收到的数据表示成头显和左右控制器状态;XR Origin 与 XRI 再读取这些状态,驱动相机、移动、转身、射线、瞬移和抓取。场景发生变化后,Unity 渲染下一帧并再次送到头显,于是形成连续闭环。
安卓应用使用的是 OpenXRLoader。它与电脑端 PXR_PTLoader 面向不同平台,不能把电脑平台的 Live Preview 开关当成安卓 OpenXR 设置。
画出两条方向相反的数据流
画出 PICO 头显、USB、PDC/串流服务、Live Preview 插件和 Unity 场景,并分别标注画面与输入方向。
- 画面方向为 Unity → 插件与串流服务 → PICO 头显。
- 输入方向为 PICO 头显与控制器 → 串流服务与插件 → Unity。
- 指出图中没有生成或安装安卓应用这一步。
- 完成标准:能用自己的话解释双向闭环。
先让设备具备稳定的数据连接能力
准备电脑、头显与 USB 调试环境
实时预览的第一层不是 Unity,而是 Windows、线缆、头显开发者模式和 USB 调试授权。只充电、短暂连接或未授权都会让上层配置失去意义。先准备可以运行课程工程的电脑与设备
本课的 Unity 实时预览使用 Windows 电脑。电脑应能正常打开并运行课程工程,PDC 与串流服务的安装程序没有提示系统或显卡不兼容;具体硬件条件以当前 PICO 安装页面为准。
头显、控制器与线缆都要准备好。能充电不代表能传数据,优先使用已确认支持数据传输的 USB 3.0 线缆和电脑接口。
本课不要求更换已经能够正常工作的版本。头显系统界面的分组名称可能不同,按“关于本机”“开发者”“USB 调试”寻找相同功能。
开发者模式、USB 调试与 ADB
开发者模式会开放应用调试和设备管理能力;USB 调试允许电脑通过 ADB 与头显通信。ADB 是安卓调试桥,可以理解为电脑与安卓设备之间的基础调试通道。
ADB 能识别设备只证明基础通道存在,不等于 Unity 画面与设备输入已经开始串流。后面还要继续确认 PDC 状态、Unity 插件和电脑平台加载器。
在头显中完成连接准备
- 01
找到开发者设置
开始前头显已开机并进入系统桌面,Unity 处于编辑状态。
这样做戴上头显,打开设置 → 通用 → 关于本机。若设置中已经有开发者页面,直接进入;没有时连续点击软件版本区域,直到出现已开启开发者模式的提示,再返回设置。
完成后应看到
设置里可以进入开发者页面。
如果不一致
只看到版本号还不算完成;返回上一层确认开发者入口。不同系统的分类名称可能略有不同。
- 02
开启 USB 调试
开始前头显显示开发者页面。
这样做找到 USB 调试并开启,再退出该页并重新进入确认。USB 调试允许电脑通过 ADB(安卓调试桥)与头显通信。
完成后应看到
USB 调试保持开启,头显仍然唤醒。
如果不一致
这一步只开放调试通道,尚未证明电脑已经连接,更不代表已经串流。
- 03
连接数据线并在头显授权
开始前USB 调试已开启,电脑和头显都处于可操作状态。
这样做将数据线直接连接电脑和头显。戴上头显读取“允许 USB 调试”提示,确认是你正在使用的电脑后允许。若已经授权,则继续保持连接。
完成后应看到
授权提示已处理,线缆连接稳定;接下来可以在电脑查看设备是否被识别。
如果不一致
只充电时先换已知可传数据的线和接口;提示被错过时重新插拔,并在头显保持唤醒时查看。
- 04
保持设备可用并返回电脑
开始前头显已完成授权,手柄已唤醒。
这样做整理线缆并留出转头、抬手的空间,回到电脑准备打开 PDC。若 PICO 4 Ultra 随后出现“已连接但串流异常”,再按问题提示检查“电脑互联自动发现”;不把反复切换这个选项作为每次连接的必做步骤。
完成后应看到
设备与数据线保持连接,可以继续在 PDC 读取状态。
如果不一致
头显进入休眠后先重新唤醒。若正在进行另一场串流,先正常结束那场会话,再进行本课体验。
连接条件分别解决什么问题
四项需要同时成立;其中任何一项失败,PDC 都可能无法稳定识别设备。
左右滑动表格,可查看完整内容
| 条件 | 作用 | 失败时的典型现象 |
|---|---|---|
| 支持数据的 USB 3.0 线缆 | 同时提供稳定供电与数据通道 | 只充电或设备反复断开 |
| 开发者模式 | 开放设备调试能力 | 找不到 USB 调试入口 |
| USB 调试 | 允许 ADB 建立基础通信 | PDC 与 Run Device 无设备 |
| 电脑授权 | 允许当前电脑访问头显 | 连接后持续等待授权或显示异常 |
完成设备准备并说明每一步的作用
逐项确认电脑、头显、线缆、USB 调试和授权,不用一句“已经连接”代替所有层级。
- 能区分供电连接、ADB 连接和实时预览串流。
- 能指出只充电时为什么应先处理线缆和接口。
- 能在头显中找到 USB 调试并接受当前电脑授权。
- 完成标准:设备连接后不会因休眠或线缆拉扯立即消失。
用具体状态描述连接进度
连接设备并确认 PDC 状态
PICO Developer Center 管理设备与串流服务。它显示的状态能告诉我们链路进行到了哪一层,但“正在充电”“已连接”和“串流中”不能互相替代。PDC 不只是连接提示窗口
PDC 提供设备管理、性能观察、截屏、录屏、投屏、文件管理、软件包下载和 ADB 命令等开发工具。本课最重要的职责是识别头显、管理后台串流服务,并显示实时预览状态。
电脑端还需要 PICO 串流服务。PDC 是学生看得见的管理界面,串流服务负责实际数据传输,两者与 Unity 项目内的 Live Preview 插件共同完成实时预览。
先达到已连接,再处理 Unity
- 01
结束 Unity 运行并保存
开始前电脑上打开 MainScene,头显已经准备好。
这样做若 Play 为蓝色,点击它退出。确认层级顶部是 MainScene,再按 Ctrl+S 保存,然后切换到 PDC。
完成后应看到
Play 未运行,MainScene 名称没有未保存星号。
如果不一致
先结束运行再改输入设置;不要在运行过程中安装软件包或切换加载器。
- 04
确认连接能够保持
开始前设备管理已经显示正确型号和已连接。
这样做保持头显唤醒,轻轻调整到正常佩戴位置,观察连接没有反复消失,再返回 Unity。
完成后应看到
PDC 可以持续读到同一台设备,Unity 仍未运行。
如果不一致
连接一出现就消失时先处理线缆、接口和休眠;在此之前不要继续判断串流画面。
连接证据能说明到哪一步
每条证据只代表一个层级通过,不要从下层状态直接推断全部交互正常。
左右滑动表格,可查看完整内容
| 状态或现象 | 已经能说明 | 还不能说明 |
|---|---|---|
| 头显正在充电 | 供电连接存在 | 线缆支持数据、电脑已经授权 |
| PDC 显示已连接 | 基础设备通信已经建立 | Unity 已经开始实时预览 |
| Run Device 能看到 PICO | ADB 基础调试通道可用 | 画面和输入的双向链路完成 |
| PDC 显示串流中 | 实时预览会话已经生效 | 场景内每项交互配置都正确 |
| 头显有画面且转头有效 | 画面和头部姿态链路工作 | 移动、瞬移与抓取都正常 |
用三条证据描述连接状态
完成一次基础连接,并分别记录头显授权、ADB 识别和 PDC 设备稳定性。
- 确认头显已经接受当前电脑的 USB 调试授权。
- 如果需要,使用 Run Device 列表辅助确认 ADB 已经看到 PICO 设备。
- 确认 PDC 持续显示正确设备,不是出现几秒后消失。
- 记录当前状态为“已连接”,把“串流中”留到 Unity 配置完成以后确认。
- 完成标准:能够说出当前通过的是供电、ADB 还是 PDC 连接层。
先确认课程项目已有内容,再决定是否安装
确认项目中的 Live Preview 插件
PDC 解决电脑与设备连接,Unity 仍需要项目内的 PICO Live Preview 插件。本课程已经嵌入 1.0.5,不应在结构完整时重复覆盖。先在 Package Manager 确认插件
打开 Window → Package Manager,在已经安装到项目的软件包中找到 PICO Live Preview,并确认版本为 1.0.5。能够看到它且控制台没有相关错误,就说明 Unity 已经识别插件,不需要再次下载或覆盖。
确认结果以后再理解它存在哪里:课程项目的 Packages 目录中包含 UnityLivePreviewPlugin-1.0.5-20250211。直接放在项目 Packages 下的完整软件包称为嵌入式软件包,复制整个项目时它会随项目一起移动。
package.json 是软件包说明文件,记录软件包名称、版本和依赖。Unity 依靠它识别一个目录是否为有效软件包。如果解压后多套一层文件夹,或者根部缺少 package.json,Package Manager 就可能无法正确识别。
MuseumVR/
└─ Packages/
└─ UnityLivePreviewPlugin-1.0.5-20250211/
├─ package.json
├─ Runtime/
├─ Editor/
└─ ...根目录直接包含 package.json,下面才是运行和编辑器文件。
已存在时只确认,不重复安装
- 01
读取 Unity 项目中的软件包版本
开始前Unity 未运行,PDC 保持已连接。
这样做打开 Window → Package Manager,将列表切到 In Project(项目内),搜索 PICO Live Preview。单击软件包,读取名称与版本。

操作提示 读取项目内 PICO Live Preview 的名称与 1.0.5 版本。已经存在时直接确认,避免重复添加。
手机上可左右滑动;点击图片可以查看完整图完成后应看到
项目内能找到 PICO Live Preview,课程工程的版本为 1.0.5。
如果不一致
下载中心显示的版本属于下载目录,不能代替 Unity 项目里的版本。以 Package Manager 当前项目为准。
- 02
确认嵌入式资源结构
开始前已在 Package Manager 找到软件包。
这样做如果需要确认文件位置,在项目根目录打开 Packages → UnityLivePreviewPlugin-1.0.5-20250211,确认根部有 package.json。这个文件描述软件包名称、版本与依赖。
完成后应看到
目录没有多套一层同名文件夹,软件包能被 Unity 识别。
如果不一致
不要手动改写 package.json,也不要把整套插件再复制到 Assets 中。
- 03
选择是否需要安装
开始前名称、版本和 Console 状态已经读完。
这样做已有兼容软件包且没有相关红色错误时,关闭 Package Manager,直接进入下一模块“切换输入方式”。只有找不到软件包时才执行下面的安装分支。
完成后应看到
能明确判断“已存在,继续设置”或“确实缺失,需要安装”。
如果不一致
版本不一致时先与课堂工程和教师确认,不要随意升级后再继续混用旧资源。
仅在缺少软件包时执行
- 01
取得并解压匹配的软件包
开始前Package Manager 中确实没有 PICO Live Preview。
这样做在 PDC 下载中心 → SDK 找到 PICO Unity Live Preview Plugin,或使用课堂提供的兼容软件包。下载并解压,找到根部的 package.json;课堂工程使用 1.0.5。

操作提示 这里只说明下载入口。图中目录显示 1.0.4;当前课程项目版本请回到 Unity 确认为 1.0.5。
手机上可左右滑动;点击图片可以查看完整图完成后应看到
本地已经有完整解压目录,能看见 package.json。
如果不一致
PDC 中的“已安装”不等于已加入当前 Unity 项目。图中的下载目录版本是 1.0.4,不作为课堂项目版本要求。
- 02
从磁盘添加并等待完成
开始前软件包已完整解压,Unity 未运行。
这样做回到 Package Manager,点击左上角加号 → Add package from disk(从磁盘添加),选择刚才目录中的 package.json。等待资源导入和脚本编译结束。
完成后应看到
进度窗口关闭,Package Manager 出现 PICO Live Preview;Console 没有相关红色编译错误。
如果不一致
选择 package.json 文件,不是压缩包或外层文件夹。出现依赖错误时按实际错误处理,不重复复制第二份软件包。
- 03
回到正常编辑状态
开始前软件包安装和编译已经结束。
这样做再次读取名称与版本,关闭 Package Manager,回到 MainScene。
完成后应看到
Unity 可以正常操作,准备打开项目设置。
如果不一致
尚在编译或有红色错误时不要进入 Play。
两个平台加载器的职责
编辑器实时预览与安卓设备应用使用不同平台设置。
左右滑动表格,可查看完整内容
| 平台 | 本项目加载器 | 用途 |
|---|---|---|
| 电脑平台 | PXR_PTLoader,界面显示 PICO Live Preview | 在 Unity 编辑器中连接 PDC 和头显 |
| 安卓平台 | OpenXRLoader | 构建并在 PICO 头显本机运行安卓应用 |
确认软件包身份与平台用途
指出 package.json 与插件版本,并解释电脑平台加载器和安卓平台加载器各自服务的运行方式。
- 能找到嵌入式软件包根部的 package.json。
- 能说出课程项目使用 PICO Live Preview 1.0.5。
- 能解释 PXR_PTLoader 服务编辑器串流,OpenXRLoader 服务安卓应用。
- 完成标准:已有插件时不重复添加或覆盖。
一次运行只保留一种清楚的输入来源
从键鼠模拟切换到 PICO 串流
模拟器资源和 Live Preview 插件可以同时留在项目中;本次运行只启用 PICO 串流,避免虚拟设备与 PICO 设备同时参与后难以判断输入来源。为什么要选择电脑平台
Unity 编辑器中的 Play 发生在当前电脑上,因此无论活动构建目标是不是安卓,编辑器都会读取电脑平台(PC Standalone)的 XR 设置。安卓平台 OpenXR 留给之后构建到 PICO 头显本机的应用。
Initialize XR on Startup 表示进入 Play 时由 Unity 自动启动当前平台的 XR 加载器。本项目没有另外编写手动启动加载器的脚本,因此这个开关需要保持开启。
让电脑平台使用真实设备输入
- 02
启用唯一的实时预览提供者
开始前正在查看电脑平台。
这样做勾选 Initialize XR on Startup(启动时初始化 XR)与 PICO Live Preview。如果电脑平台还有旧 PICO、OpenXR 等提供者同时启用,按本课路线取消它们。
完成后应看到
电脑平台只启用 PICO Live Preview,启动 XR 选项已勾选。
如果不一致
列表没有 PICO Live Preview 时回到上一模块确认软件包,先不要改 Android 设置。
停用键鼠模拟器,再重新打开确认
- 02
确认层级中没有活动的手动模拟器
开始前自动创建已关闭,回到 Hierarchy(层级)窗口。
这样做搜索 XR Interaction Simulator。自动创建方式在未运行时通常没有实例;若以前手动放入过,选中并停用该实例,再清空搜索。
完成后应看到
场景中没有活动的键鼠模拟器,真实设备可以接管输入。
如果不一致
只停用实例,不删除 Assets 中的预制体,也不新建第二套玩家。
- 03
重新打开两页设置确认保留
开始前场景仍未运行。
这样做重新打开电脑平台页与 XR Interaction Toolkit 页,确认 PICO Live Preview 已勾选、模拟器自动创建未勾选,然后关闭设置并保存 MainScene。
完成后应看到
设置重新打开后仍然保留,MainScene 已保存。
如果不一致
两种方式同时开启时先修正,再进入 Play。
两种测试路线的开关组合
切换前先退出 Play,安卓平台 OpenXR 在两种情况下都保持项目原设置。
左右滑动表格,可查看完整内容
| 设置 | 键鼠模拟 | PICO 串流 |
|---|---|---|
| 电脑平台 PICO Live Preview | 关闭 | 开启 |
| Use XR Interaction Simulator in scenes | 开启 | 关闭 |
| 输入来源 | 键盘和鼠标生成的虚拟设备 | PICO 头显与真实控制器 |
| PDC 与 USB | 不需要 | 需要 |
| 安卓平台 OpenXR | 保持原设置 | 保持原设置 |
完成一次双向切换说明
从模拟器状态切换到串流状态,再口头说明返回模拟器时要反向调整哪两个开关。
- 串流状态为 Live Preview 开、模拟器关。
- 没有修改安卓平台 OpenXR。
- 能解释为什么不需要删除模拟器资源。
- 能说明切回模拟器时,Unity 会尝试重新找到并填入新式模拟器预制体。
- 完成标准:每次运行只有一条明确输入来源。
一次只增加一个动作,逐层确认
运行场景并确认头显、手柄与交互
先看画面,再转头,再移动控制器,最后测试场景功能。MainScene 用于确认课程项目,DemoScene 用于确认标准 XRI 输入链路。先确认画面和设备姿态
- 01
把三个准备条件连起来
开始前MainScene 未运行,设置已经保留。
这样做先到 PDC 确认设备仍已连接,再回到 Unity 确认 MainScene 已打开、没有红色错误,按 Ctrl+S 保存。
完成后应看到
连接、软件配置和场景都准备好,Play 尚未启动。
如果不一致
PDC 已断开时返回连接模块;不要把 Game 有画面当作设备已经可用。
- 02
启动 Play 并读串流状态
开始前PDC 已连接,Unity 打开 MainScene。
这样做点击顶部 Play,等待场景运行。切换到 PDC,查看同一台设备的状态是否由已连接变为串流中。
完成后应看到
Unity 的 Play 呈蓝色,PDC 显示串流中。
如果不一致
仍停在已连接时先退出 Play,再检查电脑平台提供者、软件包和串流服务;不要继续测试按键。
- 03
在头显里确认博物馆画面
开始前PDC 已显示串流中。
这样做戴好头显,观察是否出现与 MainScene 相符的博物馆画面,然后缓慢转头。
完成后应看到
头显里确实出现博物馆,转头时观察方向连续变化。
如果不一致
只有电脑 Game 有画面还不算完成。头显黑屏时先退出 Play,再按下一模块的连接顺序定位。
- 04
分别确认左右设备姿态
开始前头显中已有稳定画面,周围空间安全。
这样做依次移动左手柄和右手柄,观察各自模型或射线随对应手柄改变位置和方向。完成后摘下头显,回 Unity 点击蓝色 Play 退出。
完成后应看到
头部与左右设备能够分别追踪;退出后 Play 恢复普通颜色。
如果不一致
本阶段只确认显示和姿态,不要求初始化后的 MainScene 已能移动、瞬移或抓取。
逐层确认现象
前三项在 MainScene 完成;移动、转身、瞬移和抓取只在 DemoScene 练习。每次加入一个动作。
左右滑动表格,可查看完整内容
| 层级 | 学生动作 | 应观察的结果 | 能说明什么 |
|---|---|---|---|
| 画面 | 保持不动观察头显 | 看到 Unity 当前场景 | 电脑到头显画面链路工作 |
| 头部姿态 | 缓慢左右转头和上下观察 | 视角连续跟随 | 头显输入返回 Unity |
| 控制器姿态 | 移动左右手柄 | 模型或射线方向同步 | 控制器追踪链路工作 |
| 连续移动 | 使用左摇杆 | XR Origin 按预期移动 | 输入动作与移动提供者工作 |
| 转身或瞬移 | 使用对应摇杆或射线 | 旋转或落点生效 | 行走系统相应分支工作 |
| 抓取 | 对准对象并按握持 | 对象被选中并跟随 | 交互器、对象和动作绑定工作 |
用 DemoScene 缩小问题范围
MainScene 在本课只确认博物馆画面、头部和左右手柄姿态;Starter Assets 的 DemoScene 提供配置完整的交互环境。完整路径是 Assets/Samples/XR Interaction Toolkit/3.1.2/Starter Assets/DemoScene.unity,可以在这里集中确认头部追踪、移动、转身、瞬移、抓取和跳跃。
如果 DemoScene 正常而 MainScene 尚不能移动或抓取,先确认该功能是否已经学过并制作。尚未制作时无需修复;已制作的功能异常时,再查看主场景的玩家、对象组件与输入连接。
如果两个场景都无法接收设备输入,应回到 PDC、插件、电脑端加载器和输入来源层,而不是只修改某个场景对象。
到 DemoScene 体验完整标准动作
- 01
保存主场景并打开演示场景
开始前MainScene 已退出 Play。
这样做按 Ctrl+S 保存。在 Project 搜索 DemoScene,确认路径为 Assets/Samples/XR Interaction Toolkit/3.1.2/Starter Assets/DemoScene.unity,双击打开。

操作提示 本课完整交互在 Starter Assets 的 DemoScene 中体验。先读场景名和路径,再进入运行。
手机上可左右滑动;点击图片可以查看完整图完成后应看到
Hierarchy 顶部变为 DemoScene,Scene 显示演示平台;PDC 保持连接。
如果不一致
不要拖入场景或把平台复制进博物馆;MainScene 的编辑成果继续保留。
- 02
重新串流并确认当前场景
开始前打开 DemoScene,Play 未运行。
这样做点击 Play,确认 PDC 显示串流中,再戴上头显,先转头并移动左右手柄。
完成后应看到
头显中出现演示平台,三类设备姿态都正确。
如果不一致
仍看到博物馆时确认打开的是 DemoScene,而不是只选中了文件。
- 03
测试移动和步进转身
开始前演示场景运行正常,玩家站在平台上。
这样做轻推左摇杆观察连续移动,松开停止;再左右轻推右摇杆,观察每次按固定角度转身。
完成后应看到
移动与转身分别响应,松开后不会持续漂移。
如果不一致
先小幅操作并观察;MainScene 尚未制作漫游时,不以它是否能移动来判断插件是否正确。
- 04
测试有效瞬移
开始前仍在 DemoScene,面对可站立平台。
这样做向前推动并保持右摇杆,移动手柄找到有效落点,然后松开摇杆。
完成后应看到
保持时出现瞬移指示,松开后到达有效落点。
如果不一致
先看落点是否有效;指向墙面或平台外不应强行移动。
- 05
抓住再释放对象
开始前处于演示平台的可抓取区域。
这样做让一侧射线对准可抓取物体,按该侧握持键并移动手柄,再松开握持键。然后用另一侧完成一次。
完成后应看到
握持时对象跟随对应手柄,松开后停止跟随;左右侧都能完成。
如果不一致
射线没有指向可交互对象时先调整方向,不把未配置的装饰物当作抓取练习。
- 06
体验按钮后退出并返回主场景
开始前仍在 DemoScene,抓取已释放。
这样做用射线指向界面按钮并按扳机观察反馈;按右手柄主按钮体验示例中的跳跃。完成后退出 Play,重新打开 MainScene。
完成后应看到
能够区分握持、扳机和主按钮;最后层级恢复 MainScene,Play 未运行。
如果不一致
按钮行为由场景绑定决定。确认自己所在区域和目标后再判断输入,不能要求每个按钮在任何对象上都有反应。
完成 MainScene 与 DemoScene 对照记录
MainScene 记录画面、头部与控制器姿态;DemoScene 再记录移动、转身、瞬移、抓取和按钮。MainScene 尚未制作的交互写为“后续课程学习”。
- 先确认画面与头部,再确认控制器和场景动作。
- 不要用一个功能失败推断整条串流链路失败。
- 根据两个场景的差异写出下一步应处理的层级。
- 完成标准:能够区分基础串流问题、已经制作的功能异常和后续课程才会制作的功能。
下层未通过时,不急着修改上层设置
按链路定位串流问题
USB 不传数据时,重做场景组件没有意义;DemoScene 正常时,重装 PDC 也不是合理起点。先确定失败发生在哪个判断点,再处理对应层级。第一个橙色分支处理设备无法稳定识别,第二个橙色分支处理已连接但无法串流;两个问题的起点不同。
手机上可左右滑动;点击图片可以查看完整图常见现象与处理方法
按物理连接、授权、电脑服务、Unity 和场景顺序向上定位。
左右滑动表格,可查看完整内容
| 现象 | 优先层级 | 先做什么 |
|---|---|---|
| 只充电,PDC 无设备 | 线缆与 USB 接口 | 更换可靠数据线和 USB 3.0 接口,减少转接 |
| 设备出现几秒后断开 | 物理连接或授权 | 固定线缆、保持头显唤醒、重新接受 USB 调试授权 |
| PDC 显示连接异常 | ADB 或串流服务 | 确认授权,重启 PDC 与串流服务 |
| 已连接,Play 后不变为串流中 | Unity 插件与电脑加载器 | 确认插件、PICO Live Preview 和旧 PICO 选项 |
| 头显有画面但手柄无反应 | 输入子系统 | 用 DemoScene 确认控制器与输入动作 |
| DemoScene 正常,MainScene 异常 | MainScene 场景配置 | 先确认功能是否已制作;已制作时再看玩家、对象组件、碰撞体和交互层 |
| 画面全黑且存在虚拟显卡 | 图形输出 | 退出 Play,回到本机实际显示环境后重新运行 |
| USB 偶尔消失 | Windows 电源管理 | 先换线与接口并保持唤醒;仍断开时请教师协助查看电脑的 USB 省电设置 |
| 串流正常但卡顿 | 性能与链路 | 关闭不需要的程序,降低场景负载并观察 PDC 性能信息 |
日志帮助回答发生了什么
日志是软件按顺序保存的运行信息,可用于确认服务是否启动、设备何时断开、画面子系统和输入子系统分别是否成功。使用时应记录问题前的动作、状态变化和错误是否重复,而不是只摘最后一行。
如果设备在 PDC 中只出现几秒就消失,优先处理 USB、头显唤醒和授权;不要因为 Unity 控制台没有明显错误就先覆盖软件包。
为三个现象选择正确起点
分别处理只充电、已连接但不串流、DemoScene 正常而 MainScene 无法抓取。
- 只充电从数据线、接口和授权开始。
- 已连接但不串流从 PDC 服务、插件和电脑端加载器开始。
- DemoScene 正常而 MainScene 没有抓取,先确认是否已学习并制作抓取;已制作后才检查对象配置。
- 完成标准:不会把三个不同层级的问题都归因于软件包。
修正一层后,再从入口重试
- 01
先结束失败的运行
开始前遇到无法连接、黑屏或输入异常。
这样做摘下头显,回 Unity 退出 Play,记录最后已经成功的状态:服务运行、设备已连接、串流中或已有画面。
完成后应看到
Unity 已回到编辑状态,能说清楚问题发生在哪一段。
如果不一致
不要一边运行一边同时改线缆、插件和场景,避免无法判断哪一步起效。
- 02
只处理当前没有通过的环节
开始前已经知道最后成功的状态。
这样做按上方表格从最靠前的未完成环节处理。连接恢复后回到 PDC 确认已连接,再进入 Play,最后看头显画面与动作。
完成后应看到
每次重试都有可观察结果;完整体验成功后回到 MainScene 并退出 Play。
如果不一致
DemoScene 正常而博物馆还没有某项交互时,先确认它是否属于后续课程内容,不重复安装驱动。
先释放当前运行会话,再决定下一次怎样测试
结束串流并恢复需要的测试方式
结束测试不是直接拔线。先退出 Unity 运行模式,让实时预览会话正常结束;下一次需要键鼠模拟时,再切换电脑平台加载器与模拟器开关。为什么必须先退出运行模式
Unity 处于运行模式时,电脑端加载器、PDC 串流服务和头显正在交换画面与设备数据。先退出运行模式,Unity 才会停止本次 XR 会话,PDC 的“串流中”状态也会随之结束。
如果在运行中直接拔线,Unity 与 PDC 只会看到一次突然断开。这样既不利于判断问题,也可能让下一次连接继续受到未结束状态影响。
先结束实时预览
- 01
停止运行并确认串流结束
开始前真实设备体验已经结束,Unity 可能仍在 Play。
这样做点击蓝色 Play 退出,再切到 PDC,观察设备不再处于串流中。
完成后应看到
Unity 已停止运行,PDC 不再传送场景画面。
如果不一致
先结束 Play,再处理设置或断开数据线,避免把主动断开误判成连接故障。
- 02
返回并保存 MainScene
开始前Play 已退出。
这样做若仍在 DemoScene,重新打开 Assets/_Scene/MainScene.unity。确认是自己的博物馆,再按 Ctrl+S 保存。
完成后应看到
Hierarchy 顶部为 MainScene,名称没有星号,场景只有一套活动玩家。
如果不一致
不把演示平台、运行时位置或临时设备对象保存进博物馆。
恢复键鼠方式,为下一课保留明确起点
- 01
在电脑平台关闭预览
开始前MainScene 已保存,Play 未运行。
这样做打开 Project Settings → XR Plug-in Management,选择显示器图标的电脑平台,取消 PICO Live Preview。
完成后应看到
电脑平台的 PICO Live Preview 未勾选。
如果不一致
只修改电脑标签,Android 的 OpenXR 继续保留。
- 02
恢复新版模拟器自动创建
开始前仍处于项目设置。
这样做打开 XR Interaction Toolkit,勾选 Use XR Interaction Simulator in scenes 和 Instantiate In Editor Only,保持 Classic 未勾选;确认 prefab 显示 XR Interaction Simulator。

操作提示 恢复后同时确认总开关、仅编辑器、Classic 和预制体引用,再进入运行。
手机上可左右滑动;点击图片可以查看完整图完成后应看到
两项开启、Classic 关闭、预制体非空。
如果不一致
若仍为 None,先确认第三课的示例资源存在,再通过圆圈选取新版预制体。
- 03
用一次运行确认恢复
开始前设置已关闭,MainScene 已保存。
这样做点击 Play,在 Game 内单击获得焦点,用第三课的模式切换与姿态操作确认键鼠响应。完成后再次点击 Play 退出。
完成后应看到
键鼠能够驱动虚拟设备,最后 Play 已恢复普通颜色。
如果不一致
能运行不是收尾的最后一步,必须再次退出;不要把模拟器当作第二套玩家留在场景。
- 04
保存并结束设备使用
开始前键鼠确认已经完成,Unity 已退出 Play。
这样做保持打开 MainScene,按 Ctrl+S 保存。本次不再使用头显时,断开 USB 并按课堂要求收好设备。
完成后应看到
MainScene 已保存,键鼠模拟设置保留,Android 的 OpenXR 未改变;第五课可以从这里开始实现博物馆漫游。
如果不一致
只有明确下一次继续做 PICO 体验时才保留预览模式,并记录所选方式;按本课默认收尾时恢复键鼠。
下一次测试前怎样保留设置
只调整下一次需要的电脑端输入路线,安卓平台 OpenXR 始终保持项目原设置。
左右滑动表格,可查看完整内容
| 下一次任务 | 电脑平台 PICO Live Preview | XR 交互模拟器 | USB 与 PDC |
|---|---|---|---|
| 继续 PICO 串流 | 保持开启 | 保持关闭 | 继续需要 |
| 返回键鼠模拟 | 关闭 | 启用新式模拟器并确认预制体 | 不需要 |
| 准备安卓安装包 | 不作为设备端加载器 | 保持关闭 | 安装与调试时按需连接 |
完成一次安全收尾与路线恢复
先结束串流并返回 MainScene,再恢复键鼠方式;运行一次确认响应后再次退出,保存主场景。
- PDC 已经退出“串流中”,再断开不再使用的 USB。
- 电脑平台 Live Preview 已关闭,安卓平台 OpenXR 没有被删除。
- 新式模拟器总开关已开启,Classic 保持关闭,预制体字段不是 None。
- 完成标准:重新进入 Play 确认键鼠响应后,再次退出,并保持 MainScene 已保存。
把知识变成作品
本课练习
请按顺序完成以下任务,并保存自己的学习成果。- 01
从 MainScene 未运行开始,完成头显准备和 PDC 连接,说明“服务正常”“已连接”“串流中”“头显有画面”分别证明了什么。
- 02
在 MainScene 确认博物馆画面、头部姿态与左右手柄姿态,再退出运行,到 DemoScene 体验移动、转身、瞬移、抓取和界面按钮。
- 03
遇到问题时写出最后成功的状态和下一步动作;尚未制作的博物馆交互不作为本课失败条件。
- 04
结束 Play,返回并保存 MainScene,恢复键鼠模拟并完成一次运行确认,再次退出。保留 Android 的 OpenXR 配置。
- 05
说出实时预览仍不能代替头显本机安装运行来确认的性能、权限、安装和启动行为。
需要进一步确认时
本课参考资料
打开官方文档,核对软件设置、组件参数和设备说明。把本课进度保存下来
登录后可以保存浏览内容、有效学习时间、完成状态和答题参与记录。




