本日はアプリ作成枠です。
HoloLens2でホロモンアプリを作る進捗を書き留めていきます。
今回はアプリ終了時にホロモンの状態を自動で保存するメモです。
非フォーカスと同時にアプリを終了して保存処理を行う
ホロモンの状態を自動で保存するタイミングとして、以下のフォーカスの検出を利用します。
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 } } } }
作成したスクリプトをホロモンアプリ内の適当なオブジェクトに設定しました。
セーブロードスクリプトへの参照も合わせて設定しておきます。
動作確認
シーンを再生して動作を確認します。
Unity エディター上ではシーンの再生を停止した際にフォーカスが失われたことを検知してファイル保存が実行されます。
HoloLens2 上での動作の場合は[ホーム]ボタンを押してホーム画面に戻った場合や電源ボタンを押して HoloLens2 をスリープ状態にした際に処理が実行されます。