Unity で VR などの PC / Standalone 向けのアプリケーションを作っている場合、アプリの終了処理をしたかったら MonoBehaviour.OnApplicationQuit
を使います。ですが、HoloLens などの Windows Store App (Universal Windows Platform) 向けのアプリケーション作りをしている場合はそうはいきません。
UWP / WSA のアプリケーションライフサイクル
以下の図にあるように、中断 / 再開という概念を伴うものになります。詳細はリンク先をご覧ください。
このライフサイクルによると、アプリケーションの中断後に前触れなく突如終了 (Terminate) ということがあり得ます。実はこのとき、アプリケーションが終了しているにも関わらず Unity フレームワークから MonoBehaviour.OnApplicationQuit
は呼び出されません。
Unity で呼び出されるコールバック
パッと調べた範囲では、呼び出されるのは以下のふたつだけです。
呼び出し順序 | 中断時 | 再開時 |
---|---|---|
1. | OnApplicationFocus(false) | OnApplicationPause(false) |
2. | OnApplicationPause(true) | OnApplicationFocus(true) |
つまり、中断時にはいつ勝手に終了されるかも分からないので、不測の自体に備えた終了処理に相当するものが必要ということになります。Unity を使って Windows Store App 向けのビルドを作る場合はアプリケーションライフサイクルに注意しましょう!