焦点感知
焦点感知功能允许系统 UI 在 XR 应用上叠加显示,这样当用户需要访问系统 UI 进行操作时,可以直接在应用中进行操作,而无需退出应用。
焦点感知功能属于系统的能力,开发者无需编写代码即可使用,在用户按下手柄 Home 键时,系统会自动使用焦点感知功能显示系统 UI。当系统 UI 出现时,应用会失去焦点,开发者需要监听焦点感知的事件,以保证正确处理焦点感知的状态,例如:
- 失去焦点时,将游戏暂停
- 失去焦点时,停止渲染手柄模型(因为系统在此状态也会渲染系统的手/手柄模型,以进行 UI 的交互)
焦点感知相关的事件如下:
事件 | 说明 |
---|---|
YVRManager.instance.eventsManager.onFocusGained | 应用程序失去输入焦点。例如:应用程序运行时,若用户按下手柄上的 Home 按钮,系统 UI 显示,应用程序会失去输入焦点。此时,开发者可以暂停游戏、禁用用户的输入功能(例如手柄)或通知其他在线用户该用户当前没有专注于应用程序。 |
YVRManager.instance.eventsManager.onFocusLost | 应用程序获得输入焦点。系统 UI 被关闭时,该事件触发。此时,开发者可以恢复游戏或开启用户的输入功能。 |
Tip
焦点感知的造成的 Focus 状态变化,与 Unity 默认提供的 Focus 状态变化,并非相同的概念。前者是针对 XR 应用的焦点感知功能,而后者是根据应用窗口的焦点状态变化。因此开发者不可以直接依赖 Unity 的 OnApplicationFocus
方法来处理焦点感知的状态变化。