Version: 2023.1

MonoBehaviour.OnApplicationPause(bool)

切换到手册

参数

pauseStatus 如果应用程序暂停,则为 true,否则为 false。

描述

当应用程序暂停时,发送给所有 GameObject。

OnApplicationPause 设置为 true 或 false。 通常情况下,OnApplicationPause 消息返回 false 值。 这意味着游戏正在 Editor 中正常运行。 如果选择了某个 Editor 窗口(例如 Inspector), 游戏将暂停并且 OnApplicationPause 返回 true。 当选中并激活游戏窗口时,OnApplicationPause 将再次返回 false。 true 表示游戏未激活。

请参阅 Player Settings... 中的 Resolution and Presentation 以 关闭 Run in BackgroundVisible in Background

OnApplicationPause 可以在独立于 Editor 运行的游戏中使用。 该游戏需要以小于全屏的窗口模式运行。 如果游戏被其他应用程序(全部或部分)遮挡, OnApplicationPause 将返回 true。 当游戏重新变为当前窗口时,它将取消暂停状态, 并且 OnApplicationPause 返回 false。

OnApplicationPause 可以作为协同程序使用 - 在函数中使用 yield 语句即可。以这种方式实现时,将在初始帧期间对其计算两次: 第一次是早期通知,第二次在正常的协同程序更新步骤期间进行。

在 Android 上,当启用屏幕键盘时,它会导致 OnApplicationFocus(false) 事件。 此外,如果在启用键盘时按“Home”,则不会调用 OnApplicationFocus() 事件, 而改为调用 OnApplicationPause()。

**注意:**MonoBehaviour.OnApplicationPause 接收 true 或 false。 您无法调用该消息。此外,键盘/鼠标等也无法控制 MonoBehaviour.OnApplicationPause。 暂停意味着游戏正常运行或已被暂停。

**注意:**MonoBehaviour.OnApplicationPauseGameObject 启动时调用。该调用在 Awake 之后进行。每个 GameObject 都会导致该调用。

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; } }