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에 원하는 함수를 추가해주면 된다.
'Unity' 카테고리의 다른 글
[Unity] Coroutine으로 인게임 Timer 구현 (1) | 2020.10.19 |
---|---|
[Unity] static 클래스를 통한 상수 관리 (1) | 2020.10.19 |
[Unity] Generic DontDestroyOnLoad (0) | 2020.10.05 |
[Unity/UI] Image로 Fade In, Fade Out 효과 (2) | 2020.10.05 |
[Unity] Generic Singleton (0) | 2020.10.05 |