System.EventHandler를 이용하여 변수가 변경될 때 정해진 이벤트를 호출하게 설정할 수 있다.

해당 기능은 어떤 변수가 변경되면 연쇄적으로 다양한 이벤트가 발생되어야 할 때 효과적으로 활용할 수 있다.

 

using System;
    
    public event EventHandler OnLevelChanged;
    private int _level;
    public int level
    {
        get => _level;
        set
        {
            _level = value;
            OnLevelChanged?.Invoke(this, EventArgs.Empty);
        }
    }

위 코드를 통해 플레이어의 레벨이 바뀔 때 OnLevelChanged에 등록된 이벤트들을 호출할 수 있다.

 

 

    private void Awake()
    {
        Player.instance.OnLevelChanged += Instance_OnLevelChanged;
    }

    private void Instance_OnLevelChanged(object sender, System.EventArgs e)
    {
    	// 플레이어의 레벨이 바뀔 때 실행하고 싶은 내용
    }

위의 코드는 Player가 Singleton일 때의 경우이다. 이처럼 EventHandler에 원하는 함수를 추가해주면 된다.

+ Recent posts