うにてぃブログ

主にUnityとC#に関する記事を書いていきます

【C#】パラメータの変更を監視するクラス

HPゲージなど、パラメータが変更されたタイミングで UI に反映する必要があり、
そのパラメータの利用箇所が増えると処理が複雑になっていく

そのため、汎用的に利用できる監視クラスを作成しました

※UniRx を使えば簡単に利用できるあれですが…

using System;
 
public class SubscribeValue<T>
{
    public event Action<T> Subscribe;
    private T _value;
 
    public SubscribeValue()
    {
        _value = default;
    }
 
    public SubscribeValue(T defaultValue)
    {
        _value = defaultValue;
    }
 
    public T Value
    {
        get => _value;
        set
        {
            _value = value;
            Subscribe?.Invoke(_value);
        }
    }
}

使い方

private SubscribeValue<int> Value;

private void Awake()
{
    Value = new SubscribeValue<int>();
    // 購読登録
    sValue.Subscribe += Subscribe;
    // 値を変更すると購読先が実行される
    sValue.Value = 10;
}

private void Subscribe(int value)
{
    Debug.Log($"change value : {value}")
}