本日はアプリ作成枠です。
HoloLens2でホロモンアプリを作る進捗を書き留めていきます。
ホロモンが夜の時間帯に眠るようにするメモです。
定期的に状態チェックを行う
決まった時間に眠るため、前回作成した定期的に実行されるスクリプトを利用します。
bluebirdofoz.hatenablog.com
夜の時間を判定する
睡眠の時間を判定するに、現在の時間帯をチェックする必要があります。
時間帯の判定には TimeSpan クラスを利用します。
docs.microsoft.com
0:00 ~ 6:00 の時間を判定して、範囲内の時間であれば睡眠モードに移行するコードを追加しました。
・HoloMonPhysicalConditionSingleton.cs
using UnityEngine; using System; using UniRx; using HMProject.HoloMonLogic; namespace HMProject.HoloMon { public class HoloMonPhysicalConditionSingleton : MonoBehaviour { /// <summary> /// 時刻判定(分刻み)のトリガー /// </summary> IDisposable p_MinuteTimeTrigger; /// <summary> /// 開始処理 /// </summary> void Start() { // 1分毎にトリガーを実行する p_MinuteTimeTrigger = Observable .Timer(TimeSpan.FromSeconds(60.0f - DateTime.Now.Second), TimeSpan.FromMinutes(1.0f)) .SubscribeOnMainThread() .Subscribe(x => { ChangeOverTimeCondition(DateTime.Now); }) .AddTo(this); } /// <summary> /// 定期処理 /// </summary> void Update() { } /// <summary> /// 時間経過によるコンディション変化を管理する /// </summary> /// <param name="a_DateTime"></param> private void ChangeOverTimeCondition(DateTime a_DateTime) { Debug.Log("ChangeOverTimeCondition : " + a_DateTime.ToString()); // 睡眠時刻をチェックする CheckSleepTime(a_DateTime); } /// <summary> /// 睡眠時刻をチェックする /// </summary> /// <param name="a_DataTime"></param> private void CheckSleepTime(DateTime a_DataTime) { // 現在時刻から時刻情報だけを取得する TimeSpan timeOfDay = DateTime.Now.TimeOfDay; // 00:00 ~ 06:00 の範囲をチェックする TimeSpan startTime = new TimeSpan(0, 0, 0); TimeSpan endTime = new TimeSpan(6, 0, 0); // 時間の範囲内か if ((startTime <= timeOfDay) && (timeOfDay <= endTime)) { // 範囲内なら眠り状態の開始要求を行う HoloMonCommandSingleton.Instance.StartSleep(); } } } }
HoloLens2 にアプリを展開して動作確認を行います。
デバッグのために任意の時刻を変更したい場合は、以下の手順で時刻設定を変更します。
bluebirdofoz.hatenablog.com
深夜の時間帯になるとホロモンが眠るようになりました。