본문 바로가기

유니티

유니티 함수 전달 - Delegate 사용법

유니티를 사용하다 문득 함수를 매개변수로 넣어줄 수 없을까? 싶어서 찾다가 Delegate를 찾았습니다.

자바스크립트에서는 그냥 함수를 매개변수로 넣을 수 있지만 C#에서는 안되더군요.

그래서 Delegate를 이용하여 C#에서 함수를 매개변수로 전달하는 법을 알아봅시다.

delegate 예시

먼저 8번 줄에 delegate를 선언 합니다.  (delegateTestFunc)

delegate 선언시에 주의할 사항은 리턴값, 매개변수가 delegate에 넣을 함수와 같은 형태여야 합니다.

즉 위의 예시에서는 testFunc의 리턴값과 매개변수가 delegate 선언과 같은 형태로 쓰여진걸 볼 수 있습니다.

delegate 선언이 끝났으면 delegate에 담을 함수 또한 같은형태로 만들어 주고 delegate를 매개변수로 전달하여 사용할 testFuncWithDelegate를 만들어 줍니다.

 

28번과 같이 delegate는 new 형태를 통하여 함수를 (함수 이름만) 전달 할 수 있습니다.

또 다른 방법으로는

delegateTestFunc 선언

위와 같이 선언하여 dTF = new 형태로도 사용가능합니다.

위와 같은 방법이 꼭 필요한 경우는 다른 스크립트에서 위에 선언된 delegate를 참조할 때 꼭 위와 같이 해야만 참조가 가능하더라구요!

나름 꿀팁이죠? ㅎㅎ