MonoBehaviour.OnApplicationPause(bool)
Параметры
| Параметр | Описание |
|---|---|
| pauseStatus | True, если приложение приостановлено, False, если играет. |
Описание
Отправляется всем GameObjects, когда воспроизводящее приложение останавливается или возобновляется при потере или восстановлении фокуса.
Когда Run In Background (Изменить > Project Настройки > Проигрыватель > Разрешение и представление) отключена, игра, запущенная в режиме Редактора или в автономном плеере, будет приостанавливаться в любое время, когда приложение Редактора или плеера потеряет фокус. В этих случаях Unity отправляет OnApplicationPause(true) ко всем MonoBehaviours.
pauseStatus параметр является либо true (приостановлено) или false Все MonoBehaviours получают это событие во время инициализации, сразу после Awake, так что он будет вызван (со статусом false) при первом входе в режим воспроизведения. Они получают его снова, когда приложение приостанавливает или возобновляет при потере или восстановлении фокуса.
Примечание: Unity имеет не звонок OnApplicationPause в ответ на переключение кнопки Пауза в Панель редактора. Состояние кнопки паузы в Редакторе отслеживается с помощью PauseState enum.
Для OnApplicationPause для запуска в приложении Player, работающем отдельно от Редактора, запускаемый Player должен быть окнами и меньше полного экрана. Если игра скрыта (полностью или частично) другим приложением, то она останавливается и вызывает 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; } }