# 焦点感知

焦点感知功能允许系统 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` 方法来处理焦点感知的状态变化。