第 03 课
使用模拟器测试项目
XR Interaction Simulator(XR 交互模拟器)会把键盘和鼠标输入转换成虚拟头显与控制器数据,再交给输入系统和 XR 交互工具包处理。它适合在 Unity 编辑器中快速确认输入与交互逻辑,但不能替代 PICO 4 Ultra 上的追踪、性能和佩戴体验测试。本课使用 Unity 2022.3.62f3c1、XR Interaction Toolkit 3.1.2 与已经导入的 Starter Assets。
用键盘和鼠标完成第一次 XR 功能测试
使用键盘和鼠标操纵虚拟头显与 PICO 控制器,在连接头显之前完成移动、抓取、瞬移和界面交互测试。
学完你将能够
学习目标
- 区分 XRI 软件包、示例资源、预制体和输入动作,并确认模拟器资源完整。
- 启用只在 Unity 编辑器中自动创建的新式 XR 交互模拟器。
- 解释键鼠输入、输入动作、模拟设备、XR Origin 与场景响应之间的完整链路。
- 正确使用 Tab、左右方括号、H 和移动键调整姿态,并解释 XRI 3.1.2 中 R 的实际重置范围。
- 区分“选择哪一侧设备”和“把手柄动作发送给哪一侧”,正确使用 Shift 组合键。
- 在 Starter Assets 的 DemoScene 中测试移动、转身、瞬移、抓取、跳跃和界面交互。
- 使用快速动作保持按钮状态,在双手协作后主动解除所有持续输入。
- 根据任务调节平移与旋转灵敏度,并按正确顺序退出运行模式。
开始操作前
准备工作
- 使用 Unity 2022.3.62f3c1 打开课程项目,并确认 XR Interaction Toolkit 版本为 3.1.2。
- 确认 Starter Assets 与 XR Device Simulator 两组示例资源已经导入,控制台没有红色编译错误。
- 在 MainScene 中只保留一套活动的 XR Origin;原有普通相机保持停用,XR Origin 下的相机负责头显视角。
- 保存当前场景,并确认顶部 Play 按钮没有呈蓝色,说明当前不在运行模式。
- 在键盘上找到 Tab、Shift、H、R、X、Y、左右方括号、反引号、空格键和 I、J、K、L。
本课学习路线
按照学习模块逐步完成
每个模块都包含理解、跟随操作和独立实践。先分清软件包与示例资源
确认模拟器资源已经进入项目
安装 XRI 只会提供程序能力,模拟器预制体、输入动作与帮助界面属于单独的示例资源。先确认这些资源完整,后面的设置和按键操作才有明确对象。模拟器替代的是输入设备,不是 PICO 头显
XR 交互模拟器会在运行时创建虚拟头显和左右控制器。键盘和鼠标改变这些虚拟设备的姿态或按钮值,场景中的 XR Origin 再像读取 PICO 设备一样读取它们。
模拟器可以提前发现输入动作、射线、抓取、移动和界面逻辑问题,但无法反映 PICO 头显的追踪抖动、遮挡、画面延迟、眩晕感受和一体机性能。可靠做法是先用模拟器检查逻辑,再到 PICO 4 Ultra 完成体验确认。
确认 XR Device Simulator 示例资源
- 01
打开 Window → Package Manager,在左侧选择 XR Interaction Toolkit。
- 02
确认已安装版本为 3.1.2,然后打开 Samples 页面。
- 03
找到 XR Device Simulator;如果按钮显示 Reimport,说明资源已经存在,不需要重复覆盖。
- 04
如果按钮显示 Import,点击后等待资源导入与脚本编译完成;如果显示 Update,先确认版本变化,再执行更新。
- 05
在项目窗口进入 Assets/Samples/XR Interaction Toolkit/3.1.2/XR Device Simulator/XRInteractionSimulator。
- 06
确认能够找到 XR Interaction Simulator 预制体、XR Interaction Simulator Controls 和 XR Interaction Controller Controls 输入动作资源。

观察 XR Device Simulator 右侧的 Reimport:它表示示例资源已经进入项目,不是要求再次安装。
模拟器资源各自解决什么问题
预制体组合组件,输入动作保存按键映射,帮助界面只负责显示提示。
左右滑动表格,可查看完整内容
| 资源 | 可以怎样理解 | 本课用途 |
|---|---|---|
| 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。
- 02
在左侧展开 XR Plug-in Management,然后选择 XR Interaction Toolkit。
- 03
勾选 Use XR Interaction Simulator in scenes,让项目中的场景进入运行模式时自动创建模拟器。
- 04
勾选 Instantiate In Editor Only,把自动创建范围限制在 Unity 编辑器的 Play 模式。
- 05
保持 Use Classic XR Device Simulator 不勾选,本课统一使用 XRI 3.1.2 的新式 XR Interaction Simulator。
- 06
确认 XR Interaction Simulator prefab 字段指向正确预制体,然后关闭设置窗口。
- 07
不要再把同一模拟器预制体手动拖入场景,否则自动实例与场景实例会重复。

四处需要一起观察:使用新式模拟器、只在编辑器创建、Classic 保持关闭、预制体字段引用正确。
每次测试都先准备、再运行、后观察。结果不符合预期时只修正一个环节,再重新运行比较。
手机上可左右滑动;点击图片可以查看完整图说明模拟器怎样进入场景
沿“示例资源 → 项目设置 → 预制体字段 → 进入运行模式”说出自动创建过程,并指出为什么不再手动添加另一套模拟器。
- 能够沿目录找到 XRI 3.1.2 的新式模拟器预制体。
- 能够解释 Reimport 与 Import 的区别。
- 能够说明只在编辑器创建可以避免把键鼠模拟器带入 PICO 运行环境。
知道一次按键经过哪些对象
看懂桌面运行环境与输入链路
项目最终构建给 PICO 使用的 Android 平台,不代表 Unity 的 Play 模式也在头显中运行。先分清两种运行环境,再理解键鼠输入为什么能驱动 XR Origin。Android 构建目标与桌面 Play 模式是两件事
构建目标决定最终生成哪一类安装包;点击 Play 时,程序仍在当前电脑的 Unity 编辑器中执行。因此编辑器播放会读取桌面平台的 XR 设置,而 Android 标签中的设置服务于之后的设备构建。
本课只使用键盘和鼠标模拟输入,不要求为了照搬某个画面而清空或增加桌面提供程序。先保留项目现有设置;只有在明确使用 PICO 串流或其他桌面运行方式时,才按对应功能调整。
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,确认只有一套活动 XR Origin,控制台没有红色编译错误。
- 02
点击顶部 Play 进入运行模式,再切换到 Game 游戏视图。
- 03
在游戏画面内部单击一次,让键盘焦点进入 Game 视图。
- 04
按 Y 展开 Input Selection 帮助面板,再按一次 Y 将它收起。
- 05
按 Tab 进入控制器设备模式后,按 X 展开 Controller Actions 动作面板;再次按 X 可以收起。
- 06
帮助面板只显示快捷键和当前状态,不能代替键盘输入,也不是需要用鼠标点击的控制面板。
- 07
点击呈蓝色的 Play 按钮退出运行模式,确认自动创建的模拟器随运行结束而消失。
定位一次“按键没有反应”
进入运行模式后先点击属性窗口,再按 W;随后单击 Game 视图并再次按 W,比较两次结果。
- 能够解释输入焦点决定键盘事件送给哪个窗口。
- 能够区分模拟器没有创建与 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 的运行模式,单击 Game 视图并按 Y 打开输入选择面板。
- 02
保持整体/FPS 模式,短按 W 和方向键,观察头显与左右设备保持相对位置一起变化。
- 03
从默认整体/FPS 模式按一次 Tab,观察左右两侧已经自动同时选中;不要紧接着再按双侧方括号组合。
- 04
按左方括号改为只选择左侧控制器。
- 05
使用 W、A、S、D 和 Q、E 调整左控制器位置,再用方向键或鼠标右键拖动调整朝向。
- 06
按右方括号选择右侧控制器,重复一次位移与旋转。
- 07
按 H 单独选择头显,做小幅移动和旋转,观察游戏视角变化;再次按 H 返回之前的设备选择。
- 08
先把左右控制器放在不同位置,再按 R,观察两侧控制器都会回到当前头显前方。
- 09
按 H 移动头显后再次按 R,确认控制器仍会重排到当前头显前方,而头显本身不会重置。
- 10
退出运行模式并重新进入,确认头显和全部运行时设备姿态恢复到本次运行的初始状态。
完成设备选择挑战
依次让整体、头显、左控制器和右控制器成为当前目标,在每一步说出 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 也不会替你把控制器移动到目标前。
打开具备完整交互的 DemoScene
- 01
点击 Play 退出运行模式,保存 MainScene。
- 02
在项目窗口进入 Assets/Samples/XR Interaction Toolkit/3.1.2/Starter Assets。
- 03
双击 DemoScene,确认它作为 Unity 场景打开,而不是把它拖进 MainScene。
- 04
不要改动示例场景的资源结构;它用于证明模拟器与已配置交互能否连通。
- 05
进入 DemoScene 的运行模式,单击 Game 视图,并按 Y、X 打开两级帮助面板。

DemoScene 位于 Starter Assets 根目录,内部已经准备移动、抓取和界面示例,适合先排除自有场景配置问题。
比较同一个动作键的左右路由
- 01
按右方括号选择右控制器,调整姿态后短按 G,观察右手握持状态;松开后观察状态结束。
- 02
按左方括号选择左控制器,先直接短按 G,观察动作仍发送给右侧。
- 03
保持左控制器为姿态目标,按住 Shift + G,观察左手握持状态。
- 04
松开 Shift + G,再分别用 T 与 Shift + T 比较右手和左手扳机输入。
- 05
每次动作前都说出“姿态目标是哪一侧、动作将发送给哪一侧”。
完成左右输入辨析
让左控制器与右控制器位于不同高度,然后分别发送左右手的握持与扳机输入。
- 使用方括号改变姿态目标时,不把它当成按钮动作。
- 左侧按钮与摇杆动作始终使用 Shift 组合。
- 能够根据帮助界面高亮判断输入是否送到了预期一侧。
把输入连接到真实场景响应
在 DemoScene 中完成交互测试
DemoScene 已经准备交互发起方和可响应对象,可以用来区分“模拟器没有输入”与“自己的场景还没有实现功能”。交互必须同时具备发起方与接收方
XR Origin 中的控制器、射线和交互器负责主动寻找目标;可抓取对象、可瞬移表面和可点击界面负责接收交互。模拟器只发送姿态和动作值,不会把普通模型自动变成可抓取对象。
MainScene 目前适合确认模拟器能启动以及头显、控制器姿态能变化;移动、抓取、瞬移和界面链路先在 DemoScene 中练习。DemoScene 正常而 MainScene 无响应时,应回到 MainScene 检查对应交互组件。
测试连续移动与转身
- 01
在 DemoScene 运行模式中进入设备操作模式,并确认当前使用控制器而不是手部。
- 02
按左方括号选择左控制器,按住 Shift,再短按 I、J、K、L,观察左摇杆输入带来的连续移动。
- 03
松开 Shift,短按 J 或 L,观察右摇杆在演示配置中的步进转身响应。
- 04
把结果与整体/FPS 模式下的 W 移动比较:两者画面都可能移动,但只有摇杆输入经过了场景的移动组件。
测试远距离抓取
- 01
按右方括号选择右控制器,调整位置和朝向,让射线指向可抓取对象。
- 02
观察射线或对象反馈,确认交互器已经找到目标。
- 03
按住 G,观察对象是否被右手抓取;松开 G,观察对象是否释放。
- 04
按左方括号选择左控制器并完成对准,再按住 Shift + G 测试左手抓取。
- 05
如果帮助面板显示 Grip 已输入但对象不动,先确认射线是否命中以及目标是否具有可抓取组件。

观察完整链路:控制器姿态决定射线方向,Grip 输入触发选择,可抓取对象才会跟随控制器。
点击图片可以查看完整截图测试瞬移、跳跃和未绑定按钮
- 01
选择右控制器并让射线指向有效移动表面,按住 I 观察瞬移指示。
- 02
保持指向有效落点后松开 I,观察体验者是否到达目标位置。
- 03
不按 Shift,按住 1 再松开,向右侧发送 Primary 主按钮输入,观察 DemoScene 中的跳跃响应。
- 04
不按 Shift,按住 2 再松开,向右侧发送 Secondary 副按钮输入;如果没有画面变化,先确认场景是否为副按钮绑定了功能。
- 05
没有功能绑定时,按钮状态能够正确输入但场景没有响应,这是合理现象,不应直接判定模拟器故障。
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
选择右控制器并让射线对准可抓取对象,按 X 打开动作帮助面板。
- 02
反复按反引号键,直到当前快速动作显示为 Grip。
- 03
确认当前目标是右控制器后按一次 Space,观察右手持续抓取对象。
- 04
松开所有键,确认对象仍跟随右控制器。
- 05
选择左控制器并对准另一个对象,按住 Shift + G,让左手抓取第二个对象。
- 06
松开 Shift + G 释放左手对象。
- 07
重新确认右侧与 Grip 快速动作,按一次 Space,停止右手持续握持并释放对象。
- 08
如果对象像被卡住,先检查当前侧与快速动作,再用 Space 关闭,不要反复按 R。
两种界面交互测试覆盖不同链路
鼠标适合快速检查按钮逻辑,控制器射线才能检查 XR 界面输入。
左右滑动表格,可查看完整内容
| 测试方式 | 操作 | 能够说明什么 | 不能单独说明什么 |
|---|---|---|---|
| 鼠标点击 | 直接把鼠标移到按钮并单击 | 按钮本身的普通点击逻辑工作 | 控制器射线与 XR 界面模块已经连通 |
| 右手射线 | 射线对准按钮后按 T | 右手扳机能通过 XR 界面链触发按钮 | 左手动作路由也一定正确 |
| 左手射线 | 射线对准按钮后按 Shift + T | 左手扳机与界面交互链正常 | PICO 头显中的指向精度和延迟 |
比较鼠标与控制器射线
- 01
用整体/FPS 模式快速移动到 DemoScene 的界面区域。
- 02
先用鼠标单击一个按钮,记录颜色、文字或数值变化。
- 03
选择右控制器并让射线对准同一按钮,观察悬停反馈后按 T。
- 04
选择左控制器并对准按钮,按 Shift + T。
- 05
如果鼠标有效而射线无效,检查射线是否命中、XR 界面输入组件是否存在以及扳机输入是否发送到正确一侧。
完成双手协作并清理持续状态
让右手持续抓取一个对象,同时用左手操作另一个对象和界面,最后释放所有对象。
- 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。这些是当前起点,不是所有任务都必须使用的唯一答案。

只观察 Sensitivity 区域:三个平移速度、整体倍率、两项旋转灵敏度和滚轮灵敏度都在这里调整。
灵敏度参数与调节方向
先确定问题属于平移还是旋转,再只改变对应参数。
左右滑动表格,可查看完整内容
| 参数 | 控制内容 | 数值变大 | 适合怎样调整 |
|---|---|---|---|
| Translate X/Y/Z Speed | 左右、上下、前后平移 | 单设备移动更快 | 对准小目标时降低 |
| Body Translate Multiplier | 继续放大当前版本中的键盘平移 | 整体与单设备移动都会更快 | 修改后两种模式都要复测 |
| Rotate X Sensitivity | 当前默认绑定下的左右转向输入 | 每次左右转向更明显 | 需要细调朝向时降低 |
| Rotate Y Sensitivity | 当前默认绑定下的上下俯仰输入 | 每次上下转动更明显 | 射线难对准时降低 |
| Mouse Scroll Rotate Sensitivity | 滚轮带来的轴向旋转 | 滚轮响应更明显 | 只在需要滚轮旋转时调节 |
| Rotate Y Invert | 上下俯仰输入方向 | 不是速度参数 | 按个人操作习惯选择 |
完成一次有记录的参数比较
- 01
先退出运行模式,打开 Project Settings → XR Interaction Toolkit。
- 02
使用预制体字段右侧的定位按钮找到 XR Interaction Simulator 预制体,并在属性窗口展开 Sensitivity。
- 03
记录三个 Translate Speed、Body Translate Multiplier 和两个 Rotate Sensitivity 的初始值。
- 04
只把三个 Translate Speed 暂时降低到 0.01,进入运行模式测试短按移动键的精细程度。
- 05
退出运行模式并恢复平移参数,再只把两个 Rotate Sensitivity 暂时改为 0.5,比较旋转幅度。
- 06
测试结束后退出运行模式,根据实际任务恢复初始值或保存经过比较的新值。
- 07
不要在运行模式中修改临时实例后直接离开;退出 Play 后 Unity 通常会还原运行时改动。
常见现象与处理方法
按运行状态、输入焦点、设备选择、动作方向和场景组件的顺序定位。
左右滑动表格,可查看完整内容
| 现象 | 常见原因 | 处理方法 |
|---|---|---|
| 进入运行模式后没有模拟器 | 总开关关闭或预制体字段为空 | 启用新式模拟器并指定正确预制体 |
| 场景中出现两套模拟器 | 自动创建与手动场景实例同时存在 | 保留本课的自动创建方式,移除重复实例 |
| W、A、S、D 完全无响应 | Game 视图没有键盘焦点 | 在游戏画面内部单击一次 |
| 按键改变了错误对象 | 当前模式或设备侧没有选对 | 用 Tab、方括号或 H 重新选择 |
| 左侧已选中但动作仍发送给右手 | 把姿态选择误当成动作路由 | 左手按钮和摇杆动作使用 Shift 组合 |
| 画面切成手部图标且控制器无响应 | 重复按方括号切到了手部模式 | 再次按相同方括号切回控制器模式 |
| MainScene 不能抓取但 DemoScene 正常 | MainScene 还没有可抓取对象或对应组件 | 回到目标对象检查碰撞、刚体和可抓取交互组件 |
| 松开按键后对象仍不释放 | Grip 快速动作仍在持续 | 确认设备和 Grip,再按 Space 停止 |
| 鼠标能点击但射线不能点击 | XR 界面交互链或扳机路由不完整 | 检查射线命中、界面组件与 T 或 Shift + T |
| 短按一次移动过远 | Translate Speed 过高 | 降低对应方向的平移速度 |
| 退出 Play 后参数恢复 | 修改的是运行时实例 | 退出运行模式后编辑预制体并保存 |
结束本次模拟器测试
- 01
打开动作帮助面板,确认没有 Grip、Trigger、Primary 或 Secondary 仍处于持续状态。
- 02
如果存在持续状态,选择正确一侧与快速动作并按 Space 关闭。
- 03
按一次 R,确认双侧控制器与双手回到当前头显前方;R 不会重置头显,也不受当前选中侧影响。
- 04
点击顶部蓝色 Play 按钮退出运行模式,并确认按钮恢复普通颜色。
- 05
返回 MainScene,确认没有把 DemoScene 的运行时状态保存成项目改动。
- 06
保存需要保留的预制体参数,确认场景仍只有一套活动 XR Origin,控制台没有红色编译错误。
- 07
记录模拟器能够确认的逻辑结果,并把追踪质量、性能、延迟和佩戴体验留给 PICO 4 Ultra 确认。
完成一次闭环测试
从启用模拟器开始,依次完成姿态、动作、DemoScene 交互、持续输入、界面测试、参数比较和退出运行。
- 每一步都能说出操作对象、输入动作、观察结果和完成条件。
- 出现无响应时一次只改变一个条件,并能沿输入链缩小范围。
- 退出时没有遗留持续输入,已经返回 MainScene,并知道哪些结果仍需 PICO 4 Ultra 确认。
把知识变成作品
本课练习
请按顺序完成以下任务,并保存自己的学习成果。- 01
不看帮助面板,依次说出 Tab、左右方括号、H、Shift 和 R 的职责,并说明 R 为什么与当前选中侧无关、又为什么不能恢复头显。
- 02
在 DemoScene 中完成左手连续移动、右手转身或瞬移、左右手分别抓取、主按钮跳跃与控制器射线点击。
- 03
让右手持续抓取一个对象,同时用左手操作第二个对象,最后解除两侧所有输入状态。
- 04
比较整体/FPS 的 W 移动与左手摇杆移动,画出它们分别经过的输入链。
- 05
完成一次灵敏度单项实验,并记录初始值、改动值、观察结果和最终保留值。
- 06
用模拟器确认一个功能后,列出至少三项仍需要在 PICO 4 Ultra 上确认的内容。
需要进一步确认时
本课参考资料
打开官方文档,核对软件设置、组件参数和设备说明。把本课进度保存下来
登录后可以保存浏览内容、有效学习时间、完成状态和答题参与记录。