pauseStatus | 如果应用程序已暂停,则为 True,如果正在播放,则为 False。 |
当正在运行的应用程序在失去或恢复焦点时暂停或恢复时,会发送到所有游戏对象。
当 在后台运行(编辑 > 项目设置 > 播放器 > 分辨率和演示)被禁用时,在编辑器播放模式或独立播放器中运行的游戏将在编辑器或播放器应用程序失去焦点时暂停。 在这些情况下,Unity 会向所有 MonoBehaviour 发送 OnApplicationPause(true)
。
参数 pauseStatus
为 true
(暂停)或 false
(运行)。 所有 MonoBehaviour 在初始化期间(在 Awake
之后)都会收到此事件,因此它将在第一次进入播放模式时被调用(状态为 false
)。 它们在应用程序在失去或恢复焦点时暂停或取消暂停时再次收到它。
注意: Unity 不会 在响应 编辑器工具栏 中的暂停按钮切换时调用 OnApplicationPause
。 编辑器中暂停按钮的状态由 PauseState 枚举跟踪。
对于 OnApplicationPause
在独立于编辑器运行的播放器应用程序中触发,正在运行的播放器必须是窗口化的,并且小于全屏。 如果游戏被另一个应用程序隐藏(全部或部分),那么它会暂停,Unity 会调用 OnApplicationPause
并设置 true
。 当游戏恢复焦点时,Unity 会调用 OnApplicationPause
并设置 false
。OnApplicationPause
可以是一个协程;要做到这一点,请在函数中使用 yield
语句。 以这种方式实现,它在初始帧中被评估两次:首先作为早期通知,其次在正常的协程更新步骤中。
在 Android 上,启用屏幕键盘会导致 OnApplicationFocus 事件,其值为 false
。 但是,如果您在启用键盘时按下“Home”键,则不会调用 OnApplicationFocus
事件,而是会调用 OnApplicationPause
。
using UnityEngine;
public class AppPaused : MonoBehaviour { bool isPaused = false;
void OnGUI() { if (isPaused) GUI.Label(new Rect(100, 100, 50, 30), "Game paused"); }
void OnApplicationFocus(bool hasFocus) { isPaused = !hasFocus; }
void OnApplicationPause(bool pauseStatus) { isPaused = pauseStatus; } }