05
23
delegate void callEventHandler(int a);

delegate함수 형태 정의다. 

 

event callEventHandler CallEvents = null;

event함수 배열이다.

 

CallEvents += (int a) => { Debug.Log(a); };

void Func(int a)
{
	Debug.Log(a + 1);
}

CallEvents += Func;

선언해줬던 event(CallEvents)함수를 +로 추가해주기만 하면

 

CallEvents(5);
// 결과 : 5, 6

event 이름 뒤에 괄호를 붙여주는 것만으로도 넣어뒀던 모든 함수 호출이 가능하다.

참고로 초기화는 null로 만들어주면 된다.

 

전체 코드

    delegate void callEventHandler(int a);
    event callEventHandler CallEvents = null;

    void Func(int a)
    {
        Debug.Log(a + 1);
    }

    void Start()
    {
        CallEvents += (int a) => { Debug.Log(a); };
        CallEvents += Func;
        CallEvents(5);
    }

 

활용 방식

  • GetComponentsInChildren을 통해 하는 일이 함수 호출밖에 없을 때
  • 데이터가 바뀌어 UI를 새로고침할 때
  • 콜백 함수 대체

 

주의사항

  • dontdestroyonload 오브젝트 내에서 사용 시, 맵이 바뀌었는데 이전 맵의 함수를 참조하고 있으면 에러가 난다.
    (당연한 소리긴한데 한 번 이거에 데인 적이 있어서 적어둠)
COMMENT