「Unity/ライフサイクル」の版間の差分
提供: 初心者エンジニアの簡易メモ
(→フォア・バックの切り替え判定) |
(→フォア・バックの切り替え判定) |
||
(同じ利用者による、間の23版が非表示) | |||
行31: | 行31: | ||
} | } | ||
</pre> | </pre> | ||
− | androidとiOS両方で機能することを確認。 | + | *androidとiOS両方で機能することを確認。 |
+ | *画面遷移時には動作しない。 | ||
− | + | *iOSについて、OnApplicationPauseは、起動時、Start()、よりも遅く動作します。 | |
− | + | *Androidについて、OnApplicationPauseは、起動時、Start()、よりも早く動作します。 | |
− | == | + | |
+ | *iOSでは、端末下から上スワイプで、画面を小さくしたタイミングで、pauseするが、 | ||
+ | *Androidでは、端末下から上スワイプで、画面を小さくして、別のアプリを選択したタイミングで、pauseする | ||
+ | *ちなみに、Androidは、端末下から上スワイプで、画面を小さくして、そのままタスクキルでも、pauseする | ||
+ | *両方osともに、pauseフラグが立たないと、戻したときにイベントが発生しない。 | ||
+ | |||
+ | ==OnApplicationFocusの挙動== | ||
<pre> | <pre> | ||
− | + | void OnApplicationFocus(bool hasFocus) | |
{ | { | ||
Debug.Log("OnApplicationFocus " + hasFocus); | Debug.Log("OnApplicationFocus " + hasFocus); | ||
} | } | ||
</pre> | </pre> | ||
+ | *動作タイミングはOnApplicationPauseと同じ。 | ||
+ | *アプリをバックグランドにするとfalse、フォアに戻すとtrueな挙動 | ||
+ | *画面遷移時には動作しない。 | ||
+ | |||
+ | *iOSでは、OnApplicationFocusが、起動時、動作しない。 | ||
+ | *Androidでは、OnApplicationFocusは、起動時、Start()、よりも早く動作します。 | ||
+ | *iOS/Androidともに、端末下から上スワイプで、画面を小さくしたタイミングで、focusがfalseになる | ||
+ | |||
+ | 起動時のOnApplicationFocusは、OSごとに処理が違うので使えない。Focusしない時は、動作するので使える。 | ||
==シーン切り替え== | ==シーン切り替え== | ||
行49: | 行65: | ||
OnApplicationPause | OnApplicationPause | ||
OnApplicationQuit | OnApplicationQuit | ||
+ | |||
+ | ==OnApplicationQuitについて== | ||
+ | バックグラウンド切替処理に対して、 | ||
+ | iOSでは実行されるが、Androidでは実行されない。 | ||
+ | |||
+ | ==ライフサイクルを無視して一番最初に実行== | ||
+ | [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]をつければ、csを、割り当てなくても実行される。staticをつけておく必要あり。 | ||
+ | <pre> | ||
+ | public class InitScript : MonoBehaviour | ||
+ | { | ||
+ | [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)] | ||
+ | static void Bootstrap() | ||
+ | { | ||
+ | Debug.Log("Bootstrap!!"); | ||
+ | } | ||
+ | } | ||
+ | </pre> |
2024年8月29日 (木) 14:51時点における最新版
目次
ライフサイクル
だいたいこんな感じ
Reset() Awake() OnEnable() Start() FixedUpdate() Update() OnDisable() OnDestroy()
詳細は
公式:https://docs.unity3d.com/ja/2020.1/Manual/ExecutionOrder.html
Unity初心者講座:ライフサイクルを正しく覚える https://watablog.tech/2019/09/20/post-492/
フォア・バックの切り替え判定
void OnApplicationPause(bool status) { if (status) { Debug.Log("OnApplicationPause pause"); } else { Debug.Log("OnApplicationPause resume"); } }
- androidとiOS両方で機能することを確認。
- 画面遷移時には動作しない。
- iOSについて、OnApplicationPauseは、起動時、Start()、よりも遅く動作します。
- Androidについて、OnApplicationPauseは、起動時、Start()、よりも早く動作します。
- iOSでは、端末下から上スワイプで、画面を小さくしたタイミングで、pauseするが、
- Androidでは、端末下から上スワイプで、画面を小さくして、別のアプリを選択したタイミングで、pauseする
- ちなみに、Androidは、端末下から上スワイプで、画面を小さくして、そのままタスクキルでも、pauseする
- 両方osともに、pauseフラグが立たないと、戻したときにイベントが発生しない。
OnApplicationFocusの挙動
void OnApplicationFocus(bool hasFocus) { Debug.Log("OnApplicationFocus " + hasFocus); }
- 動作タイミングはOnApplicationPauseと同じ。
- アプリをバックグランドにするとfalse、フォアに戻すとtrueな挙動
- 画面遷移時には動作しない。
- iOSでは、OnApplicationFocusが、起動時、動作しない。
- Androidでは、OnApplicationFocusは、起動時、Start()、よりも早く動作します。
- iOS/Androidともに、端末下から上スワイプで、画面を小さくしたタイミングで、focusがfalseになる
起動時のOnApplicationFocusは、OSごとに処理が違うので使えない。Focusしない時は、動作するので使える。
シーン切り替え
OnDisable() OnDestroy()
シーン切替時に、上記は実行されるが、以下は、シーン切替時には実行されず、停止、終了したときのみ実行される。
OnApplicationPause OnApplicationQuit
OnApplicationQuitについて
バックグラウンド切替処理に対して、 iOSでは実行されるが、Androidでは実行されない。
ライフサイクルを無視して一番最初に実行
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]をつければ、csを、割り当てなくても実行される。staticをつけておく必要あり。
public class InitScript : MonoBehaviour { [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)] static void Bootstrap() { Debug.Log("Bootstrap!!"); } }