!!!モバイルアプリのフォーカスの流れ !!MonoBehaviourのコールバック関数 MonoBehaviour派生クラスのコールバックで、 OnApplicationFocus/OnApplicationPause/OnApplicationQuitの3関数があります。 また、アプリ起動時にはじめに通る「Start」関数も含め、呼び出し順について記載します。 !Start void Start () { } スクリプトが呼び出される始めの1回呼び出されます。 Updateがよばれる前に呼ばれます。初期化処理などはここに記載することになります。 !OnApplicationFocus void OnApplicationFocus(bool focusStatus) { } アプリケーションにフォーカスされたとき、またははずれるときに呼ばれます。 第一引数がtrueの場合はフォーカスされた、falseの場合はフォーカスが外れた。 !OnApplicationPause void OnApplicationPause(bool pauseStatus) { } アプリケーションが一時停止/再開されたときに呼ばれます。 第一引数がtrueの場合は一時停止、falseの場合は一時停止から再開。 !OnApplicationQuit void OnApplicationQuit() { } アプリケーションが終了するときに呼ばれます。 !!Android環境 Android環境(Nexus7)で確認。 iOSでは異なるかもしれないため、別途追記予定。 !アプリを起動して終了 単純に、アプリを起動して「Application.Quit();」で終了するまでの流れ。 他のアプリへの切り替えは行わず。 +OnApplicationFocus (true) <== アプリ起動 +Start +OnApplicationFocus (false) <== アプリ終了(スクリプト内部でApplication.Quit()を呼んだ) +OnApplicationQuit この場合は、Pauseは呼ばれないようです。 !アプリを起動して他のアプリに切り替え +OnApplicationFocus (true) <== アプリ起動 +Start +OnApplicationPause (true) <== 他のアプリに切り替え この後、アプリケーションに再び戻ると +OnApplicationFocus (false) <== 他のアプリから復帰 +OnApplicationFocus (true) +OnApplicationPause (false) という流れに。 !アプリを起動してスリープ(端末のハードボタンを押す) +OnApplicationFocus (true) <== アプリ起動 +Start +OnApplicationPause (true) <== スリープ この後、スリープ状態から復帰すると、 +OnApplicationPause (false) <== スリープから復帰 という流れに。 これより、自動的にアプリの情報を保存したい場合は「OnApplicationPause(true) 」「OnApplicationQuit」で行う。 自動的にアプリの情報を読み込む場合は「Start」「OnApplicationPause(false)」で行う。 とすると、よいかもしれません。 なお、pauseが行われた「OnApplicationPause (true)」から、pauseが解除される「OnApplicationPause (false)」の間はUpdate関数は呼ばれません。 ---- {{lastmodified}}