本节摘要:XR 的 UI 不能"贴脸"——最佳距离 1-3m。本节讲清沉浸式 UI 的 4 条规则(距离、角度、缩放、聚焦)和 4 种常见眩晕成因(运动眩晕、辐辏调节冲突、深度错位、视野过载)的缓解方法。最后给一份"XR UI 设计检查清单"。
阅读完本节,你应当能够:
XR UI 设计的核心矛盾是"屏幕没有边"——传统 UI 在 1920×1080 矩形里画,XR UI 是在用户 360° 视野里画。这个变化让 4 件事完全变了:
眩晕的核心矛盾是"前庭觉 vs 视觉"——耳朵和眼睛告诉大脑"我在动"和"我没动"时,大脑就晕。
UI 与用户的最佳距离是 1-3m。小于 1m:眼睛需要持续聚焦,容易疲劳。大于 3m:眼睛需要重新聚焦到远点,浪费时间。
// Unity World Space Canvas 配置 public class XRUISetup : MonoBehaviour { [SerializeField] private Canvas worldSpaceCanvas; void Start() { // 距离用户 1.5m worldSpaceCanvas.transform.position = new Vector3(0, 1.6f, 1.5f); // 文本大小:每度视野 0.5 字符 worldSpaceCanvas.transform.localScale = new Vector3(0.005f, 0.005f, 0.005f); } }
UI 应在用户"自然视野"——水平 30°、垂直 20°。超过这个角度,用户需要转头去看,会增加疲劳。
UI 应根据用户与它的距离动态缩放。距离 2m 的 UI 看起来"对",距离 4m 时应放大 2 倍。
UI 元素应有"层次"——主操作按钮最亮,次要信息次亮,背景虚化。Vision Pro 的"玻璃材质"就是这个设计。
症状:用户感觉自己"在动",但实际身体没动——典型场景是用摇杆飞行、用瞬移以外的移动方式。
原理:前庭觉(耳朵)告诉大脑"我没动",但视觉(眼睛)告诉大脑"我在动"。两个信号冲突,大脑"晕"。
缓解:
症状:用户看 VR 里"近物"时,眼睛要同时"对眼"(辐辏)和"对焦"(调节),但 VR 屏幕的物理距离是固定的——大脑被骗。
缓解:
症状:用户戴头显 10 分钟后,伸手去拿"桌上的虚拟物体",手伸过头/伸不到位。
原理:用户对"空间尺度"还没校准——眼睛和手的运动学不一致。
缓解:
症状:用户戴头显 30 分钟后开始"视线模糊"或"眼部发胀"。
原理:XR 里用户的"聚焦点"不断切换(远近、左右、上下),眼部肌肉持续紧张。
缓解:
把上面规则凝练成一份可勾选的检查清单:
// 1. 创建 World Space Canvas // 2. 添加 TextMeshPro // 3. 配置距离/缩放 // 4. 启用"虚拟鼻子" public class XRUIChecklist : MonoBehaviour { [SerializeField] private Canvas uiCanvas; [SerializeField] private Camera xrCamera; void Start() { // 距离 1.5m、高度 1.6m(人眼高度) uiCanvas.transform.position = xrCamera.transform.position + xrCamera.transform.forward * 1.5f + Vector3.up * 0f; // 缩放 uiCanvas.transform.localScale = Vector3.one * 0.005f; // 朝向用户 uiCanvas.transform.LookAt(xrCamera.transform); uiCanvas.transform.Rotate(0, 180f, 0); } }
跑起来后:UI 始终在用户正前方 1.5m。用户转头时,UI 朝向自动跟随——这是合规的 XR UI 范式。
下一章我们走到阶梯顶端——商业化、隐私与未来三年的方向。