第 03 课
使用模拟器测试项目
XR Interaction Simulator(XR 交互模拟器)会把键盘和鼠标输入转换成虚拟头显与控制器数据,再交给输入系统和 XR 交互工具包处理。它适合在 Unity 编辑器中快速确认输入与交互逻辑,但不能替代 PICO 4 Ultra 上的追踪、性能和佩戴体验测试。本课使用 Unity 2022.3.62f3c1、XR Interaction Toolkit 3.1.2 与已经导入的 Starter Assets。
用键盘和鼠标完成第一次 XR 模拟练习
从第二课已保存的 MainScene 开始,启用模拟器、练习头显与手柄姿态,再到 DemoScene 完成移动、抓取和界面操作,最后返回主场景。
学完你将能够
学习目标
- 区分 XRI 软件包、示例资源、预制体和输入动作,并确认模拟器资源完整。
- 启用只在 Unity 编辑器中自动创建的新式 XR 交互模拟器。
- 解释键鼠输入、输入动作、模拟设备、XR Origin 与场景响应之间的完整链路。
- 正确使用 Tab、左右方括号、H 和移动键调整姿态,并解释 XRI 3.1.2 中 R 的实际重置范围。
- 区分“选择哪一侧设备”和“把手柄动作发送给哪一侧”,正确使用 Shift 组合键。
- 在 Starter Assets 的 DemoScene 中测试移动、转身、瞬移、抓取、跳跃和界面交互。
- 使用快速动作保持按钮状态,在双手协作后主动解除所有持续输入。
- 根据任务调节平移与旋转灵敏度,并按正确顺序退出运行模式。
开始操作前
准备工作
- 使用第二课的日常工程,打开已保存的 MainScene;博物馆正常显示,场景中只有一套活动玩家和一台活动主相机。
- Unity 版本为 2022.3.62f3c1,XR Interaction Toolkit(XR 交互工具包)为 3.1.2。Starter Assets 与 XR Device Simulator 示例资源已导入;本课先确认是否存在。
- 准备键盘和鼠标,切换到英文输入状态。Game 是运行画面,Scene 是编辑观察窗口;后面的快捷键要在 Game 画面获得焦点后使用。
- MainScene 此时只要求显示博物馆并响应虚拟设备姿态。移动、抓取、瞬移和界面练习在工具包自带的 DemoScene 中完成,不需要提前制作博物馆交互。
- 开始时退出 Play(运行模式),等待资源处理结束,并确认 Console(控制台)没有红色编译错误。
本课学习路线
按照学习模块逐步完成
每个模块都包含理解、跟随操作和独立实践。先分清软件包与示例资源
确认模拟器资源已经进入项目
安装 XRI 只会提供程序能力,模拟器预制体、输入动作与帮助界面属于单独的示例资源。先确认这些资源完整,后面的设置和按键操作才有明确对象。模拟器替代的是输入设备,不是 PICO 头显
XR 交互模拟器会在运行时创建虚拟头显和左右控制器。键盘和鼠标改变这些虚拟设备的姿态或按钮值,场景中的 XR Origin 再像读取 PICO 设备一样读取它们。
模拟器可以提前发现输入动作、射线、抓取、移动和界面逻辑问题,但无法反映 PICO 头显的追踪抖动、遮挡、画面延迟、眩晕感受和一体机性能。可靠做法是先用模拟器检查逻辑,再到 PICO 4 Ultra 完成体验确认。
从第二课的资源继续
- 01
在软件包管理器确认导入状态
开始前MainScene 已打开,顶部 Play 未呈蓝色。
这样做打开 Window → Package Manager,选择 XR Interaction Toolkit,确认版本为 3.1.2,再单击 Samples。找到 XR Device Simulator。

操作提示 观察 XR Device Simulator 的 Reimport:资源已经导入,接下来去 Project 找预制体。
手机上可左右滑动;点击图片可以查看完整图完成后应看到
能读到 3.1.2,XR Device Simulator 右侧是 Reimport(重新导入)或 Import(导入)。
如果不一致
若列表找不到工具包,将列表范围切到 In Project(项目内)。Reimport 表示已有资源,不要为了继续本课重复覆盖。
- 02
只在资源缺少时导入
开始前已经读懂 XR Device Simulator 右侧按钮。
这样做若显示 Import,点击并等待导入与编译结束;若显示 Reimport,直接保留现有资源。关闭 Package Manager。
完成后应看到
进度窗口关闭,Project 可以操作,Console 没有红色编译错误。
如果不一致
不要改装其他版本;若出现 Update,先核对课程要求的 3.1.2 和现有目录,避免混用多个版本。
- 03
找到新版预制体和输入动作
开始前软件包窗口已关闭,回到 Project(项目)窗口。
这样做展开 Assets → Samples → XR Interaction Toolkit → 3.1.2 → XR Device Simulator → XRInteractionSimulator。单击蓝色立方体图标的 XR Interaction Simulator。确认同目录有 XR Interaction Simulator Controls 和 XR Interaction Controller Controls。

操作提示 项目资源中选中 XR Interaction Simulator。属性顶部的 Prefab Asset 表示这是可复用的资源,不是场景中的玩家。
手机上可左右滑动;点击图片可以查看完整图完成后应看到
Inspector(属性)顶部写着 Prefab Asset,能看到 XR Interaction Simulator 组件和 Input Action Manager 中的输入资源。
如果不一致
搜索到带 UI 的预制体或 XR Device Simulator 时不要选错;本课选用名称为 XR Interaction Simulator 的新版预制体。
模拟器资源各自解决什么问题
预制体组合组件,输入动作保存按键映射,帮助界面显示模式、状态与快捷键,并提供展开和收起入口。
左右滑动表格,可查看完整内容
| 资源 | 可以怎样理解 | 本课用途 |
|---|---|---|
| XR Interaction Simulator prefab | 保存好组件与参数的对象模板 | 进入运行模式时创建模拟器 |
| XR Interaction Simulator Controls | 设备选择、位移、旋转和重置的按键表 | 操纵头显或控制器姿态 |
| XR Interaction Controller Controls | 摇杆、扳机、握持和按钮的按键表 | 发送左右控制器动作 |
| Input Action Manager | 进入运行模式后启用输入动作资源的组件 | 让模拟器能够持续读取以上按键映射 |
| Simulator UI | 运行时快捷键说明面板 | 观察当前模式与输入状态 |
沿目录找到三类关键资源
从 Assets/Samples 开始,依次指出模拟器预制体、模拟器控制输入和控制器动作输入。
- 能够解释 Import、Update 与 Reimport 分别表示首次导入、更新和重新导入。
- 能够说出预制体是保存好对象结构、组件与参数的模板。
- 能够指出两份输入动作资源分别管理姿态操纵和控制器按钮。
决定何时创建哪一个模拟器
启用模拟器的自动创建功能
项目使用统一设置在进入运行模式时创建模拟器,不需要把同一预制体手动拖入每个场景。先理解实例化,再完成四项设置。预制体与运行实例不是同一个对象
Prefab(预制体)是保存好结构、组件和参数的对象模板;Instantiate(实例化)是根据模板创建一个真正参与运行的对象。项目设置保存预制体引用,Unity 在进入运行模式时再创建实例。
本课让模拟器只在 Unity 编辑器的 Play 模式中自动出现。PICO 应用使用头显追踪和控制器输入,不需要把键鼠模拟器带入设备运行环境。
设置每次运行时自动创建模拟器
- 01
进入模拟器设置页
开始前资源已经找到,当前未运行场景。
这样做打开 Edit → Project Settings,展开左侧 XR Plug-in Management,再单击 XR Interaction Toolkit。

操作提示 观察自动创建总开关、仅编辑器选项、新旧模拟器选项和预制体引用。四项需要一起确认。
手机上可左右滑动;点击图片可以查看完整图完成后应看到
右侧标题为 XR Interaction Toolkit,下面出现 Interaction Simulator Settings。
如果不一致
不要停在 XR Plug-in Management 的平台列表;需要继续单击它下面的 XR Interaction Toolkit。
- 02
启用新版模拟器并限定使用范围
开始前右侧显示 Interaction Simulator Settings。
这样做勾选 Use XR Interaction Simulator in scenes 和 Instantiate In Editor Only;保持 Use Classic XR Device Simulator 未勾选。
完成后应看到
前两个方框有勾,Classic 方框为空。含义是仅在编辑器运行时自动创建新版模拟器。
如果不一致
已经符合时不用反复取消再勾选。不要为了本课取消“仅编辑器”,以免将键鼠模拟器带入后面的设备应用。
- 03
确认预制体引用并重新打开核对
开始前自动创建已开启。
这样做读取 XR Interaction Simulator prefab。若为 None,用右侧圆圈选择第一模块找到的 XR Interaction Simulator。关闭设置,再按同一路径打开一次核对。
完成后应看到
字段显示 XR Interaction Simulator;重新打开后四项设置仍然保留。
如果不一致
引用为空时先确认示例资源存在;不要创建空物体代替预制体,也不要选择名称带 UI 的资源。
- 04
确认没有重复实例和其他输入占用
开始前设置已保留,Play 仍未运行。
这样做关闭设置,在 Hierarchy 搜索 XR Interaction Simulator。自动创建方式下,编辑状态通常没有该对象。若此前手动添加过,停用该实例。若刚用过 PICO 实时预览,在电脑平台取消 PICO Live Preview,然后清空层级搜索框。
完成后应看到
场景中没有活动的手动模拟器;电脑输入准备使用键鼠,Android 的 OpenXR 配置保持第二课状态。
如果不一致
不要一键清空所有平台的提供者。只处理正在使用的电脑输入方式;第四课会逐项说明如何切换。
每次测试都先准备、再运行、后观察。结果不符合预期时只修正一个环节,再重新运行比较。
手机上可左右滑动;点击图片可以查看完整图说明模拟器怎样进入场景
沿“示例资源 → 项目设置 → 预制体字段 → 进入运行模式”说出自动创建过程,并指出为什么不再手动添加另一套模拟器。
- 能够沿目录找到 XRI 3.1.2 的新式模拟器预制体。
- 能够解释 Reimport 与 Import 的区别。
- 能够说明只在编辑器创建可以避免把键鼠模拟器带入 PICO 运行环境。
知道一次按键经过哪些对象
看懂桌面运行环境与输入链路
项目最终构建给 PICO 使用的 Android 平台,不代表 Unity 的 Play 模式也在头显中运行。先分清两种运行环境,再理解键鼠输入为什么能驱动 XR Origin。Android 构建目标与桌面 Play 模式是两件事
构建目标决定最终生成哪一类安装包;点击 Play 时,程序仍在当前电脑的 Unity 编辑器中执行。因此编辑器播放会读取桌面平台的 XR 设置,而 Android 标签中的设置服务于之后的设备构建。
本课使用键盘和鼠标模拟输入。若电脑平台仍启用了 PICO Live Preview,先按上一模块关闭它,再进入 Play;不要修改 Android 的 OpenXR。其他提供者是否需要调整,应根据实际输入方式判断。
Android 构建与编辑器播放的区别
两者使用同一个项目,但运行位置、输入来源和本课观察重点不同。
左右滑动表格,可查看完整内容
| 对比项 | Unity 编辑器 Play | PICO 应用运行 |
|---|---|---|
| 运行位置 | 当前开发电脑 | PICO 4 Ultra |
| 本课输入 | 键盘和鼠标生成模拟设备数据 | 头显追踪与 PICO 控制器输入 |
| 能够检查 | 输入映射、移动、抓取、瞬移和界面逻辑 | 追踪质量、延迟、性能与佩戴体验 |
| 设置重点 | 模拟器开关、Game 视图焦点和桌面播放环境 | Android OpenXR、PICO 功能与设备权限 |
模拟器不会直接拖动 XR 相机
HMD 是 Head-Mounted Display 的缩写,指头戴显示设备,在本课中就是模拟头显。输入动作可以理解为“按键与功能名称之间的对应表”:键盘 W 先成为向前位移的动作值,模拟器再把它写入虚拟设备状态;XR Origin 和交互组件读取状态后,画面与对象才发生变化。
这种间接链路很重要:模拟器和 PICO 设备都向后续系统提供设备数据,所以同一套 XR Origin 与交互组件可以重复使用。场景没有移动组件或对象没有抓取组件时,模拟器不会凭空补出相应功能。
沿箭头阅读:键鼠只提供起点输入,最终响应还依赖输入动作、模拟设备和场景组件全部连通。
手机上可左右滑动;点击图片可以查看完整图一次键盘输入的五步传递
任一步缺失都会表现为无响应,但处理位置完全不同。
左右滑动表格,可查看完整内容
| 顺序 | 对象 | 承担的工作 | 可以观察什么 |
|---|---|---|---|
| 1 | 键盘和鼠标 | 产生按键、方向或鼠标位移 | 游戏视图是否获得焦点 |
| 2 | Input Action 输入动作 | 把物理按键整理成有名称的动作值 | 动作资源与绑定是否存在 |
| 3 | XR Interaction Simulator | 判断当前目标并写入模拟状态 | 帮助界面的设备和输入高亮 |
| 4 | 虚拟 XR 设备 | 保存头显与左右控制器的姿态和按钮值 | 模拟设备是否被正确选择 |
| 5 | XR Origin 与 XRI 组件 | 读取动作并执行移动、抓取或界面交互 | 场景是否出现预期响应 |
完成第一次进入与退出
- 01
保存并进入运行模式
开始前MainScene 层级完整,只有一套活动玩家,没有红色编译错误。
这样做按 Ctrl+S 保存场景,再点击顶部 Play。等候加载结束,单击 Game 标签。
完成后应看到
Play 呈蓝色,Game 出现博物馆画面和模拟器帮助入口。
如果不一致
出现红色错误时先退出 Play;看不到帮助入口时检查总开关、预制体引用和当前是否为 Game。
- 02
让键盘进入游戏画面
开始前Play 呈蓝色,Game 画面已经出现。
这样做切换到英文输入状态,在 Game 画面内部单击一次,再按 Y 展开 Input Selection(输入选择);再按一次可收起。也可用面板上的 Open/Close 展开或收起帮助。

操作提示 Input Selection 显示当前模式与设备选择。图中演示场景用于看清面板位置;博物馆中的同名面板操作相同。
手机上可左右滑动;点击图片可以查看完整图完成后应看到
输入选择帮助可以打开、收起,能读到当前模式与设备选择。随后用 Tab 的模式变化确认键盘输入。
如果不一致
在搜索框、Scene 或网页中按键不会操纵模拟器。返回 Unity 后重新单击 Game;Open/Close 可点击;设备图标和动作键图案用于提示,不代替键盘动作。
定位一次“按键没有反应”
在 MainScene 进入运行模式后先点击属性窗口,再按 W;随后单击 Game 视图并再次按 W,比较两次结果,最后退出 Play。
- 能够解释输入焦点决定键盘事件送给哪个窗口。
- 能够区分模拟器没有创建与 Game 视图没有焦点。
- 能够用输入链判断问题发生在按键、动作、模拟设备还是场景组件。
先选谁,再决定怎样移动
选择设备并调整空间姿态
设备选择、姿态操纵和手柄按钮输入是三层不同控制。先熟悉整体、头显和左右设备的切换,后面测试动作时才不会把输入送错对象。Tab 只切换两类操作模式
Tab 在整体/FPS 模式与设备操作模式之间切换。这里的 FPS 指“第一人称整体操纵”,不是表示画面流畅度的帧率。整体/FPS 模式把头显和左右设备作为一组移动,适合在编辑器中快速改变观察位置;它不是现实手柄上的移动输入。
模拟器默认从整体/FPS 模式开始。第一次按 Tab 进入设备操作模式时,左右两侧会自动一起选中;左方括号改为只选左侧,右方括号改为只选右侧,同时按两个方括号可以选择两侧。对已经选中的同一目标组合再次按对应方括号,会切换控制器或手部设备模式;本课只使用控制器模式。
设备选择与姿态快捷键
先看当前高亮对象,再使用位移或旋转键。短按后观察一次,避免设备一下移出视野。
左右滑动表格,可查看完整内容
| 输入 | 作用 | 容易混淆的地方 |
|---|---|---|
| Tab | 在整体/FPS 与设备操作模式之间切换 | 不是在所有单个设备之间循环 |
| [ | 选择左侧设备;同一侧再次按可切换控制器/手部 | 只决定姿态目标,不发送左手按钮动作 |
| ] | 选择右侧设备;同一侧再次按可切换控制器/手部 | 只决定姿态目标,不发送右手按钮动作 |
| H | 单独选择或退出头显操纵 | 改变头显姿态会直接影响游戏视角 |
| W/A/S/D | 前、左、后、右平移当前目标 | 整体模式与单设备模式影响范围不同 |
| Q/E | 向下或向上平移当前目标 | 适合调整手柄高度 |
| 方向键 | 旋转当前目标 | 旋转的是当前选中设备或整体 |
| 鼠标右键拖动 | 连续旋转当前目标 | Game 视图必须有焦点 |
| 按住鼠标右键时滚动滚轮 | 为当前姿态操作提供 Z 轴变化 | 可用于前后移动,并在单设备操作中参与滚转 |
| Z/C/V | 把移动或旋转限制到 Z/Y/X 轴 | XRI 3.1.2 的 R 不采用这些轴约束 |
| R | 把左右控制器与双手状态放回当前头显前方 | 与当前选中侧无关,而且不会重置头显 |
分别移动整体、左右手柄和头显
- 01
体验整体移动
开始前重新进入 MainScene 的 Play,单击 Game,按 Y 展开帮助。
这样做保持整体/FPS 模式,短按 W,再短按方向键。FPS 在这里表示第一人称整体操作。
完成后应看到
画面位置或朝向变化,头显和左右设备一起变化,彼此大致保持相对位置。
如果不一致
每次只短按一个键;此时能移动画面不代表场景的摇杆移动或碰撞功能已经完成。
- 03
切到右侧并比较
开始前左侧姿态变化已经观察完,Game 仍有焦点。
这样做按右方括号 ] 选择右控制器,短按相同移动键和方向键。
完成后应看到
右手位置或朝向变化,左侧保留刚才的姿态。
如果不一致
不要连续按两次 ],否则可能切换为手部。面板中的设备图标应先于按键操作确认。
- 04
单独移动头显并比较 R
开始前两只控制器已经处于不同位置。
这样做按 H 选择头显,短按移动键或方向键改变视角;再按 R,观察双侧控制器回到当前头显前方。再次按 H 返回之前的设备选择。
完成后应看到
R 重排两侧控制器与双手;头显仍处于刚才的位置,R 不会把视角送回场景起点。
如果不一致
需要恢复全部初始姿态时,退出 Play 再进入;不要反复按 R 期待头显复位。
- 05
结束姿态练习
开始前已经比较整体、左侧、右侧、头显和 R。
这样做松开所有按键,点击蓝色 Play 退出,按 Ctrl+S 保存 MainScene。
完成后应看到
Play 不再呈蓝色;主场景名称后没有未保存星号。
如果不一致
运行过程中改变的设备姿态不会作为编辑状态保存;无需将临时设备复制回场景。
完成设备选择挑战
依次让整体、头显、左控制器和右控制器成为当前目标,在每一步说出 W 会影响谁,并验证 R 始终重排双侧控制器/手部而不重置头显。
- 能够说明 Tab 只负责整体/FPS 与设备操作模式切换。
- 能够用方括号选择左侧、右侧或双侧,并知道对已选目标组合再次按会切换控制器或手部模式。
- 能够说明 R 的行为不随当前选中侧变化,并知道恢复头显需要结束本次运行。
姿态目标与动作方向分开控制
把控制器动作发送给正确一侧
左右方括号只决定移动、旋转哪一侧设备;Shift 才决定按钮或摇杆动作是否发送给左侧。把这两层分开,是使用模拟器最重要的习惯。常用控制器动作快捷键
不按 Shift 时动作发送给右侧;按住 Shift 再使用同一动作键时,动作发送给左侧。
左右滑动表格,可查看完整内容
| 键盘输入 | 模拟的控制器输入 | 常见用途 |
|---|---|---|
| 按住 T / 松开 T | 按下 / 松开 Trigger 扳机 | 激活功能或使用射线点击界面 |
| 按住 G / 松开 G | 按下 / 松开 Grip 握持 | 抓取并保持对象 / 释放对象 |
| 1 | Primary 主按钮 | 右侧对应 A,Shift + 1 的左侧对应 X |
| 2 | Secondary 副按钮 | 右侧对应 B,Shift + 2 的左侧对应 Y |
| I/J/K/L | 主摇杆上/左/下/右 | 连续移动、转身或瞬移指向 |
| Shift + 动作键 | 同一动作发送给左侧 | 例如 Shift + G 是左手握持 |
| 直接按动作键 | 动作发送给右侧 | 例如 G 是右手握持 |
为什么选中左控制器后仍可能是右手在动作
按左方括号后,W、A、S、D 和旋转输入会改变左侧设备的姿态;但直接按 G、T 或 I、J、K、L 时,控制器动作仍默认发送给右侧。左侧动作需要按住 Shift。
例如测试左手抓取时,先用左方括号选择左控制器并让它对准对象,再按住 Shift + G。只选择左侧不会自动握持,只按 Shift + G 也不会替你把控制器移动到目标前。
切换到配置完整的演示场景
- 01
打开 DemoScene
开始前已经退出 Play 并保存 MainScene。
这样做在 Project 展开 Assets → Samples → XR Interaction Toolkit → 3.1.2 → Starter Assets,双击 DemoScene。也可搜索 DemoScene,再确认底部路径含 Starter Assets。

操作提示 局部图确认场景图标和层级顶部名称;打开完整大图,可在 Project 底部读取 Starter Assets/DemoScene.unity 路径。
手机上可左右滑动;点击图片可以查看完整图完成后应看到
Hierarchy 顶部显示 DemoScene,场景里有蓝色练习台和现成的交互区域。
如果不一致
不要选择 HandsDemoScene;不要把场景文件拖进 MainScene,也不要新增第二套 XR Origin。
- 02
开始演示场景的模拟运行
开始前当前场景为 DemoScene,Play 未开启。
这样做点击 Play,等候画面出现后单击 Game。按 Y 查看 Input Selection,从整体模式按 Tab 进入设备模式,再按 X 查看动作面板。
完成后应看到
Game 出现演示台、控制器和帮助面板;本轮交互都在这里完成。
如果不一致
按 X 没有出现动作面板时先确认已经进入控制器设备模式。
把姿态目标与动作发送方向分开
- 01
先观察右手动作
开始前Game 有焦点,处于控制器设备模式。
这样做按 ] 选择右控制器,短按 G(Grip,握持)后松开;再短按 T(Trigger,扳机)后松开。
完成后应看到
动作面板中相应输入短暂亮起,松开后结束;没有命中对象时可以只有输入状态变化。
如果不一致
G 和 T 含义不同,不要把“没抓住物体”直接当成“按键没有输入”。
- 02
选中左手但先不按 Shift
开始前右手动作已经观察过。
这样做按 [ 选择左控制器作为姿态目标,直接短按 G,再松开。
完成后应看到
左侧仍是姿态目标,但普通 G 发送的仍是右手握持输入。
如果不一致
方括号决定移动和旋转哪一侧,不能代替动作键的左右分配。
- 03
用 Shift 发送左手动作
开始前左控制器仍被选中,所有按键已经松开。
这样做按住左 Shift,再短按 G 或 T;先松开动作键,再松开 Shift。
完成后应看到
这次输入发送给左手,松开后结束。你能分别说出姿态目标和动作发送方向。
如果不一致
使用左 Shift;后面左摇杆的 I、J、K、L 同样要加左 Shift。
完成左右输入辨析
让左控制器与右控制器位于不同高度,然后分别发送左右手的握持与扳机输入。
- 使用方括号改变姿态目标时,不把它当成按钮动作。
- 左侧按钮与摇杆动作始终使用 Shift 组合。
- 能够根据帮助界面高亮判断输入是否送到了预期一侧。
把输入连接到真实场景响应
在 DemoScene 中完成交互测试
DemoScene 已经准备交互发起方和可响应对象,可以用来区分“模拟器没有输入”与“自己的场景还没有实现功能”。交互必须同时具备发起方与接收方
XR Origin 中的控制器、射线和交互器负责主动寻找目标;可抓取对象、可瞬移表面和可点击界面负责接收交互。模拟器只发送姿态和动作值,不会把普通模型自动变成可抓取对象。
MainScene 目前只确认模拟器启动以及头显、控制器姿态变化;移动、抓取、瞬移和界面操作都在 DemoScene 中练习。博物馆的这些功能将在后续课程制作,当前没有响应不算本课失败。
观察摇杆移动与转身
- 01
用左摇杆移动玩家
开始前DemoScene 在运行,当前是控制器设备模式。
这样做按住左 Shift,分别短按 I、J、K、L,再松开。观察相对练习台的位置变化。
完成后应看到
玩家通过演示场景的移动组件连续前后左右移动;松开后停止。
如果不一致
整体/FPS 模式下 W 直接改变模拟姿态,不能用它代替本步的摇杆练习。
- 02
用右摇杆步进转身
开始前左 Shift 与所有移动键已松开。
这样做直接短按 J 或 L,比较一次按下前后的朝向。
完成后应看到
画面按演示场景设置的固定角度转向。
如果不一致
若持续向左平移,先确认没有按住左 Shift。
完成抓取与释放
- 02
抓住后再放开
开始前右手射线已经命中可抓取对象。
这样做按住 G,轻微移动右控制器;观察后松开 G。
完成后应看到
握持时对象被选中并随交互移动,松开后对象释放。
如果不一致
面板显示 Grip 但对象不动时,先回到上一步重新对准,不要再添加玩家。
- 03
把同样的动作换成左手
开始前右手对象已经释放,按键全部松开。
这样做按 [ 选左控制器,对准可抓取对象,按住左 Shift + G,再松开 G 和 Shift。
完成后应看到
左手也能抓取、移动和释放对象。
如果不一致
方括号选中了左手后,仍然需要左 Shift 才会发送左手动作。
观察瞬移与按钮响应
- 01
先选有效瞬移落点
开始前DemoScene 正在运行,所有持续抓取已解除。
这样做选择右控制器,使其朝向演示场景的移动表面,按住 I,调整朝向直到落点显示有效。
完成后应看到
出现瞬移指示和有效落点;此时只是选择目的地,还没有移动。
如果不一致
落点无效时先调整射线方向;MainScene 还没有在本课设置瞬移地面,不用回博物馆尝试。
- 02
释放摇杆完成瞬移
开始前瞬移指示落在有效表面。
这样做松开 I,比较与练习台的相对位置。
完成后应看到
画面到达所选落点;下一次瞬移仍从按住 I 选择落点开始。
如果不一致
若没有移动,重新确认落点有效再松开,避免在空中或无效表面释放。
- 03
比较主按钮和副按钮
开始前玩家已站在演示地面上,未保持摇杆或抓取。
这样做直接短按 1,向右手主按钮发送输入并观察跳跃;再短按 2,观察副按钮输入。
完成后应看到
DemoScene 的主按钮产生跳跃。副按钮若没有绑定功能,可以只有输入状态变化。
如果不一致
按键输入成功与场景功能响应是两层;没有绑定的按钮不要求凭空产生功能。
DemoScene 功能验证记录
每次只测试一条输入链,先观察结果,再决定检查哪一层。
左右滑动表格,可查看完整内容
| 功能 | 模拟输入 | 预期结果 | 没有结果时先检查 |
|---|---|---|---|
| 连续移动 | Shift + I/J/K/L | 体验者沿左摇杆方向移动 | 左侧动作路由与移动组件 |
| 步进转身 | 不按 Shift 的 J/L | 视角按固定角度左右转动 | 右侧动作路由与转身方式 |
| 远距离抓取 | 射线命中后按住 G | 对象跟随右控制器,松开后释放 | 射线命中与可抓取组件 |
| 瞬移 | 有效地面上按住 I,确认落点后松开 | 体验者到达指示位置 | 射线颜色、有效地面与瞬移组件 |
| 跳跃 | 不按 Shift 的 1 | 体验者向上跳起后落回地面 | 右侧 Primary 输入与 Jump 绑定 |
完成一条可复现的交互链
连续完成移动、转身、右手抓取、左手抓取、瞬移和跳跃,并为每一步说出输入来源与响应对象。
- 能够区分整体/FPS 快速定位与手柄摇杆移动。
- 能够用左右手分别抓取和释放对象。
- 能够判断无响应来自选错设备、动作方向错误、没有对准,还是场景缺少功能。
完成双手协作与两种界面路径
保持持续动作并测试界面
持续握持时还要操纵另一侧设备,普通按住 G 会占用太多按键。快速动作可以持续发送一个按钮状态,但结束测试时也必须主动关闭。反引号选择动作,Space 开始或停止
反引号键会在当前设备模式可用的快速动作之间循环,例如 Trigger、Grip、Primary 和 Secondary。Space 用于切换当前快速动作的持续状态:按一次开始持续发送,再按一次停止。
持续动作不是把对象锁死。模拟器仍在持续输出按钮按下状态,场景中的抓取组件继续按正常链路工作。R 会同时重排双侧控制器与双手的位姿,但不会重置头显,也不能代替 Space 关闭持续动作。
保持右手握持,再操作左手
- 01
选择右手的 Grip 快速动作
开始前右手射线已经对准可抓取对象,左 Shift 未按下。
这样做选择右控制器,按 X 显示动作帮助,按反引号键 ` 循环,直到快速动作显示 Grip。
完成后应看到
当前设备侧是右侧,当前快速动作名称为 Grip。
如果不一致
反引号通常在数字 1 左侧;不要把单引号当成反引号。先解除旧的持续动作再循环切换。
- 02
让右手保持并释放左手
开始前快速动作已选为 Grip,右手仍对准对象。
这样做按一次 Space(空格),松开所有键;再选左手,对准另一个对象,使用左 Shift + G 抓取后松开。
完成后应看到
右手在松开空格后继续保持对象;左手按键按下时抓取、松开后释放。
如果不一致
Space 是持续动作的开关。按一次后不需要一直压着它。
- 03
明确结束持续握持
开始前左手已释放,右手 Grip 仍在持续。
这样做松开左 Shift,重新确认右侧与 Grip 快速动作,按一次 Space。
完成后应看到
右手对象释放,面板不再显示持续 Grip。
如果不一致
R 只重排姿态,不能关闭持续握持;不要靠重置位置来释放对象。
两种界面交互测试覆盖不同链路
鼠标适合快速检查按钮逻辑,控制器射线才能检查 XR 界面输入。
左右滑动表格,可查看完整内容
| 测试方式 | 操作 | 能够说明什么 | 不能单独说明什么 |
|---|---|---|---|
| 鼠标点击 | 直接把鼠标移到按钮并单击 | 按钮本身的普通点击逻辑工作 | 控制器射线与 XR 界面模块已经连通 |
| 右手射线 | 射线对准按钮后按 T | 右手扳机能通过 XR 界面链触发按钮 | 左手动作路由也一定正确 |
| 左手射线 | 射线对准按钮后按 Shift + T | 左手扳机与界面交互链正常 | PICO 头显中的指向精度和延迟 |
比较鼠标点击与手柄射线点击
- 02
用右手和左手重复同一点击
开始前鼠标能触发目标按钮,界面位于视野内。
这样做按 Tab 进入设备模式;右手射线对准同一按钮,出现悬停反馈后按 T。再换左手对准,使用左 Shift + T。
完成后应看到
左右手射线都能触发相同按钮;鼠标点击成功和手柄点击成功分别得到确认。
如果不一致
鼠标有效而手柄无效时,按“射线命中 → 正确手侧 → 扳机输入 → 场景界面组件”查找,不用重装工具包。
完成双手协作并清理持续状态
让右手持续抓取一个对象,同时用左手操作另一个对象和界面,最后释放所有对象。
- Space 前确认当前设备和快速动作,Space 后观察持续状态。
- 鼠标点击与控制器射线各完成一次,能够说明两条输入路径的区别。
- 结束时没有遗留 Grip、Trigger 或其他持续按钮状态。
让操作精度与收尾状态都可控
调节灵敏度并安全结束测试
平移速度过大会越过小目标,旋转灵敏度过高会让射线难以对准。参数调节应有初始值、有单项比较,并在退出运行模式前解除持续输入。灵敏度决定输入变化的幅度
Translate Speed 控制三个方向的基础平移速度。当前 XRI 3.1.2 中,Body Translate Multiplier 会继续乘到整体/FPS 和单设备的键盘平移上,因此改变它以后两种模式都要重新测试。Rotate Sensitivity 控制旋转响应,数值越大,同样输入产生的角度变化越明显。
当前预制体画面中三个平移速度为 0.2,整体移动倍率为 5,X 与 Y 旋转灵敏度为 0.2,滚轮旋转灵敏度为 0.05。这些是当前起点,不是所有任务都必须使用的唯一答案。
灵敏度参数与调节方向
先确定问题属于平移还是旋转,再只改变对应参数。
左右滑动表格,可查看完整内容
| 参数 | 控制内容 | 数值变大 | 适合怎样调整 |
|---|---|---|---|
| Translate X/Y/Z Speed | 左右、上下、前后平移 | 单设备移动更快 | 对准小目标时降低 |
| Body Translate Multiplier | 继续放大当前版本中的键盘平移 | 整体与单设备移动都会更快 | 修改后两种模式都要复测 |
| Rotate X Sensitivity | 当前默认绑定下的左右转向输入 | 每次左右转向更明显 | 需要细调朝向时降低 |
| Rotate Y Sensitivity | 当前默认绑定下的上下俯仰输入 | 每次上下转动更明显 | 射线难对准时降低 |
| Mouse Scroll Rotate Sensitivity | 滚轮带来的轴向旋转 | 滚轮响应更明显 | 只在需要滚轮旋转时调节 |
| Rotate Y Invert | 上下俯仰输入方向 | 不是速度参数 | 按个人操作习惯选择 |
只改变一组灵敏度并恢复
- 01
先记录资源原值
开始前已经退出 Play,Project 可以操作。
这样做在 Project 找到 XR Interaction Simulator 预制体,单击并展开 Inspector 中的 Sensitivity(灵敏度)。记录三项 Translate Speed、Body Translate Multiplier 和两项 Rotate Sensitivity。

操作提示 三个 Translate Speed 调整平移,两个 Rotate Sensitivity 调整转动。图中的数值用于对照原值,不要求统一改成同一套数值。
手机上可左右滑动;点击图片可以查看完整图完成后应看到
你有一份包含原值的记录,属性顶部显示 Prefab Asset。
如果不一致
选到 Hierarchy 中的运行实例时,先退出 Play 再从 Project 选择资源。
- 02
只比较平移速度
开始前原值已记录,当前未运行。
这样做将三个 Translate Speed 暂时改为各自原值的一半,进入 DemoScene 的 Play,以相同短按方式比较手柄位移,记下结果后退出 Play。
完成后应看到
位移更小、精细对准更容易;比较结果对应的改动只有平移速度。
如果不一致
不要同时修改旋转和整体倍率,否则无法判断哪项带来变化。
- 03
恢复平移,再比较旋转
开始前已经退出 Play,并记录平移比较结果。
这样做恢复三个平移原值;只将两个 Rotate Sensitivity 改为各自原值的一半。运行并比较方向键或鼠标右键转动,观察后退出。
完成后应看到
相同输入下旋转幅度减小,平移恢复原来的幅度。
如果不一致
不同电脑的帧数和输入持续时间会影响感觉,只比较相同操作条件,不要求照抄别人的位移距离。
- 04
恢复本课结束参数
开始前第二次比较结束,当前未运行。
这样做把两项旋转也恢复为记录中的原值,确认全部参数与原记录一致。按 Ctrl+S 保存。
完成后应看到
预制体恢复原值,本课只留下参数比较记录。
如果不一致
退出 Play 会还原运行实例的临时改动;Project 中的预制体改动需要在编辑状态明确恢复。
常见现象与处理方法
按运行状态、输入焦点、设备选择、动作方向和场景组件的顺序定位。
左右滑动表格,可查看完整内容
| 现象 | 常见原因 | 处理方法 |
|---|---|---|
| 进入运行模式后没有模拟器 | 总开关关闭或预制体字段为空 | 启用新式模拟器并指定正确预制体 |
| 场景中出现两套模拟器 | 自动创建与手动场景实例同时存在 | 保留本课的自动创建方式,移除重复实例 |
| W、A、S、D 完全无响应 | Game 视图没有键盘焦点 | 在游戏画面内部单击一次 |
| 按键改变了错误对象 | 当前模式或设备侧没有选对 | 用 Tab、方括号或 H 重新选择 |
| 左侧已选中但动作仍发送给右手 | 把姿态选择误当成动作路由 | 左手按钮和摇杆动作使用 Shift 组合 |
| 画面切成手部图标且控制器无响应 | 重复按方括号切到了手部模式 | 再次按相同方括号切回控制器模式 |
| MainScene 不能抓取但 DemoScene 正常 | MainScene 还没有可抓取对象或对应组件 | 本课在 DemoScene 练习抓取;MainScene 的对象交互留到后续课程 |
| 松开按键后对象仍不释放 | Grip 快速动作仍在持续 | 确认设备和 Grip,再按 Space 停止 |
| 鼠标能点击但射线不能点击 | XR 界面交互链或扳机路由不完整 | 检查射线命中、界面组件与 T 或 Shift + T |
| 短按一次移动过远 | Translate Speed 过高 | 降低对应方向的平移速度 |
| 退出 Play 后参数恢复 | 修改的是运行时实例 | 退出运行模式后编辑预制体并保存 |
回到博物馆并交接第四课
- 01
完成最后一次模拟运行
开始前灵敏度已恢复,仍打开 DemoScene。
这样做运行一轮,打开动作帮助,确认没有持续 Grip、Trigger、Primary 或 Secondary;有则选择正确侧与快速动作,用 Space 关闭。最后退出 Play。
完成后应看到
对象全部释放,Play 恢复普通颜色,临时模拟器随运行结束消失。
如果不一致
不要用 R 代替解除持续输入,也不要保存运行中的临时姿态。
- 02
重新打开并保存 MainScene
开始前DemoScene 已退出 Play。
这样做在 Project 搜索 MainScene,确认路径是 Assets/_Scene/MainScene.unity,再双击打开。清空搜索,按 Ctrl+S。
完成后应看到
Hierarchy 顶部是 MainScene,名称没有未保存星号;Play 未运行,场景只有一套活动玩家。
如果不一致
没有将演示台、DemoScene 或临时模拟器带进博物馆。博物馆此时不要求具备抓取或瞬移。
- 03
整理本课结果
开始前MainScene 已保存并退出运行。
这样做记录 DemoScene 中已完成的移动、转身、瞬移、抓取和界面操作,并写出需要真实头显确认的追踪、空间尺度和佩戴感受。
完成后应看到
保留可自动启用的模拟器设置和操作记录;第四课从这个已保存的 MainScene 接着连接 PICO。
如果不一致
模拟练习通过不等于头显运行通过,下一课仍要逐层确认真实设备输入。
完成一次闭环测试
从启用模拟器开始,依次完成姿态、动作、DemoScene 交互、持续输入、界面测试、参数比较和退出运行。
- 每一步都能说出操作对象、输入动作、观察结果和完成条件。
- 出现无响应时一次只改变一个条件,并能沿输入链缩小范围。
- 退出时没有遗留持续输入,已经返回 MainScene,并知道哪些结果仍需 PICO 4 Ultra 确认。
- 灵敏度恢复原值,MainScene 已保存,顶部 Play 未运行。
把知识变成作品
本课练习
请按顺序完成以下任务,并保存自己的学习成果。- 01
不看帮助面板,依次说出 Tab、左右方括号、H、Shift 和 R 的职责,并说明 R 为什么与当前选中侧无关、又为什么不能恢复头显。
- 02
在 DemoScene 中完成左手连续移动、右手转身或瞬移、左右手分别抓取、主按钮跳跃与控制器射线点击。
- 03
让右手持续抓取一个对象,同时用左手操作第二个对象,最后解除两侧所有输入状态。
- 04
比较整体/FPS 的 W 移动与左手摇杆移动,画出它们分别经过的输入链。
- 05
完成一次灵敏度单项实验,记录原值、改动值和观察结果,结束时恢复原值。
- 06
用模拟器确认一个功能后,列出至少三项仍需要在 PICO 4 Ultra 上确认的内容。
- 07
结束时返回 MainScene,退出 Play 并保存;下一课从这里开始,不把 DemoScene 当作博物馆继续编辑。
需要进一步确认时
本课参考资料
打开官方文档,核对软件设置、组件参数和设备说明。把本课进度保存下来
登录后可以保存浏览内容、有效学习时间、完成状态和答题参与记录。



