blog profile img

들_

좋아하는 일을 열심히 합니다.

카테고리
  • 전체 (85)
    • 작업 (12)
      • 게임 (5)
      • 만화·애니 (2)
      • 티스토리 스킨 (5)
      • 일러스트 (0)
    • 코딩 (32)
      • 웹·앱 (12)
      • Unity · Godot (14)
      • RPG Maker (3)
      • 그 외 (2)
    • 일기 (28)
    • 사담 (13)
      • 지최시 (2)
      • 천쇠 (11)
      • 차기작 (0)
공지사항
  • 주요 스킨 댓글/방명록 작성 오류 현상 해결법
  • 티스토리 스킨 커미션 안 받습니다.
  • 태그
  • 방명록
반응형
05
23
코딩/Unity · Godot

[Unity] C# delegate / event 간단 정리

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
 
DESIGN BY D-DL

티스토리툴바