C#
Delegate - 2편 Event
Korokke
2022. 4. 10. 21:43
이번 포스트는 Delegate와 같이 사용되는 Event에 대해 정리해 보겠다.
Event란
Delegate는 하나의 클래스 안에서 여러 함수를 추가해 한 번에 사용했던 반면, Event는 다른 모든 클래스에서 함수를 추가시키고 한 번에 사용할 수 있다.
Event의 문법
public static event Delegate 클래스명 Event 이름;
저번 델리게이트 포스팅에서 썼던 스크립트에 이벤트를 선언 후 꺼질 때 Onstart 이벤트가 실행되게끔 수정하고,
public class Test : MonoBehaviour
{
public delegate void LevelUp(int value);
// 이벤트
public static event LevelUp OnStart;
public void SetPower(int value)
{
power += value;
print("power의 값이 " + value + "만큼 증가했습니다. 총 power의 값 = " + power);
}
void Start()
{
// 함수 추가
OnStart += SetPower;
}
private void OnDisable()
{
OnStart(5);
}
}
Test2 라는 스크립트를 만들어 Event를 선언한 OnStart에 SetDefence 함수를 추가했다.
public class Test2 : MonoBehaviour
{
int defence;
void Start()
{
Test.OnStart += SetDefence;
}
public void SetDefence(int value)
{
defence += value;
print("defence의 값이 " + value + "만큼 증가했습니다. 총 defence의 값 = " + defence);
}
}
결과값
한 줄 요약: Event는 Delegate의 싱글톤 버전이라고 생각하면 될 것 같다.
참조: https://www.youtube.com/watch?v=m9_D0DQ4SGU&list=PLUZ5gNInsv_O7XRpaNQIC9D5uhMZmTYAf&index=12