読者です 読者をやめる 読者になる 読者になる

xin9le.net

Microsoft の製品/技術が大好きな Microsoft MVP な管理人の技術ブログです。

Unity における Windows Store App のアプリケーションライフサイクル

Unity で VR などの PC / Standalone 向けのアプリケーションを作っている場合、アプリの終了処理をしたかったら MonoBehaviour.OnApplicationQuit を使います。ですが、HoloLens などの Windows Store App (Universal Windows Platform) 向けのアプリケーション作りをしている場合はそうはいきません。

UWP / WSA のアプリケーションライフサイクル

以下の図にあるように、中断 / 再開という概念を伴うものになります。詳細はリンク先をご覧ください。

f:id:xin9le:20170212221534p:plain

このライフサイクルによると、アプリケーションの中断後に前触れなく突如終了 (Terminate) ということがあり得ます。実はこのとき、アプリケーションが終了しているにも関わらず Unity フレームワークから MonoBehaviour.OnApplicationQuit は呼び出されません

Unity で呼び出されるコールバック

パッと調べた範囲では、呼び出されるのは以下のふたつだけです。

呼び出し順序 中断時 再開時
1. OnApplicationFocus(false) OnApplicationPause(false)
2. OnApplicationPause(true) OnApplicationFocus(true)

つまり、中断時にはいつ勝手に終了されるかも分からないので、不測の自体に備えた終了処理に相当するものが必要ということになります。Unity を使って Windows Store App 向けのビルドを作る場合はアプリケーションライフサイクルに注意しましょう!