なんかいろいろしてみます

Dec 4, 2018 - 1 minute read - HoloLens

HoloLensアプリの終了処理

HoloLensのUnityアプリをアプリ内から終了させたい場合の方法について説明します.

HoloLensのアプリ

HoloLensで実行されるアプリはすべてUniversal Windows Platform(UWP)形式で動作しています. UnityでUWPアプリを作成する場合Player SettingsVirtual Reality Supportedにチェックを入れることで3Dアプリを実行することができます.

通常HoloLensの3Dアプリを終了する場合にはBloomジェスチャーでホームに戻ることができます. しかし,アプリ起動後にホームに戻っただけではサスペンド状態に移行しただけでしばらくはメモリの解放などが行われません. アプリを完全に終了させるためにはホームに設置された対象アプリの2Dウィンドウを削除する必要があります.

UWPのライフサイクル

Unityからのアプリ終了処理

UWPビルドされたUnityアプリはUWP内でUnityアプリが動作しているイメージです. そのためUnityアプリを終了するためのApplication.Quit()のみではUnity側が終了するだけでUWP側は終了しません.(何も表示されない画面のままになる)

UWPビルドのUnityアプリを完全に終了するためにはUWP側の終了関数であるWindows.ApplicationModel.Core.CoreApplication.Exit()を呼び出してあげる必要があります.

1234567
        public static void AppExit()
        {
            Application.Quit();
#if WINDOWS_UWP
            Windows.ApplicationModel.Core.CoreApplication.Exit();
#endif
        }

https://github.com/akihiro0105/HoloLensModule/blob/master/Assets/HoloLensModule/Environment/Scripts/SystemInfomation.cs

まとめ

  • そもそも終了処理を必要としないアプリを作成したい
  • 関数単位の機能は HoloLensModule にまとめていきたい