MRが楽しい

MRやVRについて学習したことを書き残す

HoloLens2でホロモンアプリを作る その92(アプリ終了時にホロモンの状態を自動で保存する)

本日はアプリ作成枠です。
HoloLens2でホロモンアプリを作る進捗を書き留めていきます。
f:id:bluebirdofoz:20220109224700j:plain

今回はアプリ終了時にホロモンの状態を自動で保存するメモです。

非フォーカスと同時にアプリを終了して保存処理を行う

ホロモンの状態を自動で保存するタイミングとして、以下のフォーカスの検出を利用します。
bluebirdofoz.hatenablog.com

実装スクリプト

予期しない動作を避けるため、フォーカスが外れた場合はアプリを終了すると共に状態のファイル保存を行う以下のスクリプトを作成しました。
・HoloMonAppExitChecker.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

using HoloMonApp.SaveDataSpace;

namespace HoloMonApp.UtilitiesSpace
{
    // アプリのフォーカスが外れた場合
    // 自動でデータをセーブしてアプリを完全終了する
    public class HoloMonAppExitChecker : MonoBehaviour
    {
        [SerializeField, Tooltip("セーブロードの参照")]
        private HoloMonSaveLoadAccessor p_HoloMonSaveLoadAccessor;

        /// <summary>
        /// フォーカスの変更イベント
        /// </summary>
        /// <param name="focus"></param>
        private void OnApplicationFocus(bool focus)
        {
            // フォーカスが失われた場合はアプリを自動で完全終了する
            if (focus == false)
            {
                // 終了前にデータのセーブを行う
                p_HoloMonSaveLoadAccessor.SaveData();
#if WINDOWS_UWP
            Windows.ApplicationModel.Core.CoreApplication.Exit();
#else
                Application.Quit();
#endif
            }
        }
    }
}

作成したスクリプトをホロモンアプリ内の適当なオブジェクトに設定しました。
セーブロードスクリプトへの参照も合わせて設定しておきます。
f:id:bluebirdofoz:20220109224724j:plain

動作確認

シーンを再生して動作を確認します。
f:id:bluebirdofoz:20220109224734j:plain

Unity エディター上ではシーンの再生を停止した際にフォーカスが失われたことを検知してファイル保存が実行されます。
f:id:bluebirdofoz:20220109224743j:plain

HoloLens2 上での動作の場合は[ホーム]ボタンを押してホーム画面に戻った場合や電源ボタンを押して HoloLens2 をスリープ状態にした際に処理が実行されます。