Unity 6.3
0 онлайн 29 гостей 3 в системе
Вход

MonoBehaviour.OnApplicationFocus(bool)

Параметры

Параметр Описание
hasFocus True, если GameObjects имеет фокус, в противном случае False.

Описание

Отправляется всем GameObjects, когда игрок получает или теряет фокус.

OnApplicationFocus вызывается, когда приложение теряет или получает фокус. Переключение по Alt+Tab или Cmd+Tab может передать фокус от приложения Unity другому настольному приложению. В результате GameObject получают вызов OnApplicationFocus с аргументом false. Когда пользователь возвращается в приложение Unity, GameObject получают вызов OnApplicationFocus с аргументом true.

OnApplicationFocus может быть сопрограммой; для этого используйте в функции оператор yield. При такой реализации он выполняется дважды в начальном кадре: сначала как раннее уведомление, а затем на обычном этапе обновления сопрограммы.

В Android включение экранной клавиатуры вызывает событие OnApplicationFocus( false ). Если при включённой клавиатуре нажать Домой, вызывается событие OnApplicationPause(), а не событие OnApplicationFocus().

Примечание: когда Редактор находится в режиме Play, OnApplicationFocus вызывается при потере или получении фокуса представлением Game. Если фокус принадлежит внешнему приложению (то есть приложению, отличному от Unity) и вы щёлкаете другую вкладку Редактора, ::OnApplicationFocus вызывается дважды в одном кадре. В первый раз OnApplicationFocus вызывается с hasFocus, равным true, поскольку представление Game возвращает фокус, когда его получает Unity. Во второй раз OnApplicationFocus вызывается с hasFocus, равным false, поскольку представление Game передаёт фокус выбранной вкладке Редактора.

Чтобы сократить число вызовов OnApplicationFocus, когда Редактор находится в режиме Play, а вы работаете с другими его окнами, вынесите представление Game в отдельное плавающее окно.

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