유니티
유니티 함수 전달 - Delegate 사용법
SOJA_Dev
2022. 11. 21. 20:50
유니티를 사용하다 문득 함수를 매개변수로 넣어줄 수 없을까? 싶어서 찾다가 Delegate를 찾았습니다.
자바스크립트에서는 그냥 함수를 매개변수로 넣을 수 있지만 C#에서는 안되더군요.
그래서 Delegate를 이용하여 C#에서 함수를 매개변수로 전달하는 법을 알아봅시다.
먼저 8번 줄에 delegate를 선언 합니다. (delegateTestFunc)
delegate 선언시에 주의할 사항은 리턴값, 매개변수가 delegate에 넣을 함수와 같은 형태여야 합니다.
즉 위의 예시에서는 testFunc의 리턴값과 매개변수가 delegate 선언과 같은 형태로 쓰여진걸 볼 수 있습니다.
delegate 선언이 끝났으면 delegate에 담을 함수 또한 같은형태로 만들어 주고 delegate를 매개변수로 전달하여 사용할 testFuncWithDelegate를 만들어 줍니다.
28번과 같이 delegate는 new 형태를 통하여 함수를 (함수 이름만) 전달 할 수 있습니다.
또 다른 방법으로는
위와 같이 선언하여 dTF = new 형태로도 사용가능합니다.
위와 같은 방법이 꼭 필요한 경우는 다른 스크립트에서 위에 선언된 delegate를 참조할 때 꼭 위와 같이 해야만 참조가 가능하더라구요!
나름 꿀팁이죠? ㅎㅎ