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