본문 바로가기
개발/코드

Unity) 값 변경시 상시 변경(Value Change Action)

by 테샤르 2022. 1. 20.

값 변경시 상시 변경(Value Change Action)

특정 값이 변경될 때 Action을 처리하는 abstract class로 Value에 값이 set 되는 과정에서 등록된 ValueChnaged의 Unity Action이 실행이 된다. 값이 변경될때마다 확인해서 처리하기보다는 등록하는 형식으로 구현하자.

반응형

따로 신경쓰지 않아도 처리가 되서 편리하게 사용이 가능하다. 

옵저버 패턴과 비슷하다고 생각하면 이해하기 쉽다.

using UnityEngine.Events;


/// <summary>
/// Value CHnage Action
/// </summary>
/// <typeparam name="T"></typeparam>
public abstract class ValueChange <T>
{
    private T _value;

    public UnityAction<T> ValueChanged;

    public T Value
    {
        get => _value;

        set
        {
            _value = value;
            OnValueChanged();
        }
    }

    protected virtual void OnValueChanged() => ValueChanged?.Invoke(_value);
}

 

<사용방법>

  public class GameDataTime : ValueChange<float> { };
  
  
  public class Test : MonoBehaviour
  {
    private GameDataTime m_DateTime = new GameDataTime();
    
    
    Start()
    {
           m_DateTime.ValueChanged += (float time) =>
                    {
                       Debug.Log($"Time : {time}");
                    };
    }
    
    
    Update()
    {
    	m_DateTime.Value += DateTime.Now.Millisecond;
    }
    
}

 

★☆☆☆☆

 

반응형

댓글