本日はアプリ作成枠です。
HoloLens2でホロモンアプリを作る進捗を書き留めていきます。
今回は時刻ごとに発生するホロモンの変化を監視するため、00秒開始の分刻みで定期実行する処理を追加するメモです。
00秒開始の分刻みでの処理実行
UniRx の Timer のファクトリメソッドを利用します。
Timer の利用方法については以下の記事を参照ください。
bluebirdofoz.hatenablog.com
Timer の開始までのウェイト指定に 00 秒までの待機時刻を計算して指定します。
実行間隔には 1 分を指定すれば 00 秒開始の分刻みで処理を実行することができます。
・HoloMonPhysicalConditionSingleton.cs
using UnityEngine; using System; using UniRx; namespace HMProject.HoloMon { public class HoloMonPhysicalConditionSingleton : MonoBehaviour { /// <summary> /// 時刻判定(分刻み)のトリガー /// </summary> IDisposable p_MinuteTimeTrigger; /// <summary> /// 開始処理 /// </summary> void Start() { // 初回実行の00秒までのウェイトを設定し、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()); } } }
確認の結果、凡そ00秒の辺りで1分毎の処理が実行されるようになりました。
初期化時の負荷によるバラツキが発生しますが、今回はそこまで厳密に00秒開始としたい訳ではないのでこの実装で良しとしました。