MRが楽しい

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

HoloLens2でホロモンアプリを作る その65(ホロモンの現在ステータスをUIで確認する)

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

ホロモンの現在ステータスをUIで確認する

以下の記事で作成したホロモンの内部ステータスをUIから確認できるようにします。
bluebirdofoz.hatenablog.com

内部ステータスの変化は UI 側で UniRx の ReadOnlyReactiveProperty を購読して検出します。
ReadOnlyReactiveProperty の詳細は以下の記事を参照ください。
bluebirdofoz.hatenablog.com

実装スクリプト

HoloMonConditionLifeSingleton クラスから対象パラメータの ReadOnlyReactiveProperty を購読して状態が変化するとテキストを変更するスクリプトを作成しました。
・ShowStatusHungry.cs

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

using TMPro;

using UniRx;
using HoloMonApp.ConditionSpace;

namespace HoloMonApp.MenuViewSpace
{
    public class ShowStatusHungry : MonoBehaviour
    {
        [SerializeField, Tooltip("テキスト出力先")]
        private TextMeshPro p_TextField;

        /// <summary>
        /// 開始処理
        /// </summary>
        void Start()
        {
            HoloMonConditionLifeSingleton.Instance.IReadOnlyReactivePropertyHoloMonLifeStatus
                .ObserveOnMainThread()
                .Subscribe(status => {
                    int percent = status.HungryPercent;
                    p_TextField.text = percent.ToString() + " %";
                })
                .AddTo(this);
        }
    }
}

f:id:bluebirdofoz:20211017225413j:plain

UIの表示パネルをシーンに追加し、それぞれ空腹度、機嫌、元気(疲労度)のスクリプトを設定しました。
f:id:bluebirdofoz:20211017225421j:plain

動作確認

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

ハンドメニューからパラメータの項目を開くと、ホロモンの現在のステータスが表示されます。
ステータスに変化があると ReadOnlyReactiveProperty のイベントが発生し、即座に反映されます。
f:id:bluebirdofoz:20211017225536j:plain