MRが楽しい

MRやVRについて学習したことを書き残す

UnityでOnApplicationPauseを使ってアプリケーションの一時停止時の処理を行う

本日は Unity の小ネタ枠です。
UnityでOnApplicationPauseを使ってアプリケーションの一時停止時の処理を行う方法についてです。

OnApplicationPause

アプリケーションが一時停止する、またはそれが解除されたときに全てのゲームオブジェクトで実行されます。
一時停止するときはステータスに true が渡され、解除するときに false が渡されます。
OnApplicationPause は yield ステートメントを使ってコルーチンにすることができます。
この場合、初期フレーム内で早期通知と通常の更新ステップの2回評価されます。
docs.unity3d.com

OnApplicationPause は1フレーム内のライフサイクル関数の中でも最も遅いタイミングで呼び出されます。
docs.unity3d.com

サンプルコード

エディター上で一時停止時の動作を確認する以下のサンプルコードを用意しました。
・OnApplicationPauseTest.cs

using UnityEngine;

public class OnApplicationPauseTest : MonoBehaviour
{
    void OnApplicationPause(bool pauseStatus)
    {
        Debug.Log($"Check OnApplicationPause : {pauseStatus}");
    }
}

デフォルトでは UnityEditor 上では OnApplicationPause の動作を確認できません。
UnityEditor 上で OnApplicationPause の動作を確認するにはメニューから[Edit -> Project Settings]を開き、[Player]タブから[Run In Background]のチェックを外します。

これで Unity ウィンドウを最小化した場合などに動作が一時停止し、UnityEditor 上で OnApplicationPause が呼び出される動作を確認できます。