应用生命周期处理
更新时间: 2025年9月10日
当 Horizon 操作系统预期应用停止模拟、渲染和接受输入时,便会发送
应用暂停事件。应用在发生这些事件时仍会在后台运行,但用户无法看到应用或与之交互。暂停期间,应用不应接受任何交互操作。请参阅
VRC.Quest.Functional.2 了解更多详情。
Horizon 操作系统支持同时运行多个应用。例如,某用户在玩沉浸式游戏时,可能打开一个在游戏过程中始终可见的 2D 浏览器窗口来查看攻略。在此场景中,尽管浏览器窗口和沉浸式游戏均对用户可见,但预期每次只有一个应用会响应用户输入。当 Horizon 操作系统检测到用户意图向其他应用发送输入时,它会向失去焦点的应用及获得焦点的应用(如适用)发送输入焦点事件。
当失去输入焦点时,应用必须停止渲染所有被追踪的控制器/手部,并忽略所有输入(参阅
VRC.Quest.Input.4)。然而,失去输入焦点对于音频、渲染和模拟效果的影响可由应用开发者自行确定。例如,单人动作游戏在失去输入焦点时可能需要完全暂停,而沉浸式视频播放器则可能需要继续视频播放。
当用户实际佩戴或摘除物理设备时,便会发送 HMD 佩戴/摘除事件。尽管应用暂停事件会在用户摘除设备后几秒钟才发送,但 HMD 摘除事件会立即发送。这对于某些应用很实用,例如应用希望在暂停前保存用户状态或将用户标记为非活动状态。
Unity 应用可以监听或检查 Horizon 操作系统发送的以下常见事件。
应用初始化时:
HMD MountedInput Focus Acquired
当用户快速取下 HMD 然后又迅速戴上时
- 用户摘除 HMD 时:
HMDUnmounted - 用户戴回 HMD 时:
HMDMounted
当用户取下 HMD,等待设置 > 电源 > 自动睡眠中配置的时间长度,再重新戴回设备时
- 用户摘除 HMD 时:
HMDUnmounted 然后在经过配置的时间后:
Input Focus LostApplication Paused
用户戴回 HMD 时:
HMD MountedApplication UnpausedInput Focus Acquired
Application PausedInput Focus Lost
Application UnpausedInput Focus Acquired
打开通用菜单时:
当用户选择“继续”或关闭通用菜单时:
Input Focus Acquired