Frontend/Unity

[유니티 C# 기초 강의] 12. 델리게이트

에반황 2016. 8. 3. 13:53


이 글은 PC 버전 TISTORY에 최적화 되어있습니다.


서론

델리게이트라는 것은 함수에 대한 참조라고 생각하면 됩니다. 하나의 델리게이트로 여러 함수들에 접근해 실행할 수 있습니다. 또한 델리게이트를 이용해 함수를 파라미터로 전달할 수 있고, 여러 함수를 한꺼번에 실행하는 체인 기능과, 어떤 상황에 도달했을 때, 이벤트를 발생시키는 델리게이트 이벤트도 제공되어집니다.



델리게이트 기본 사용법

델리게이트는 기본적으로 함수와 형태가 같게 만들어집니다. 아래 delegate 를 보면 참조할 AddNumbers와 SubNumbers 함수의 형태와 같은 것을 볼 수 있습니다. 그리고 참조변수와 같기 때문에 객체를 생성합니다. 괄호 안에는 참조할 함수를 넣는 것입니다.











실행하면 AddNumbers 를 참조하는 delegate에 값을 넣었기 때문에 더하기 연산을 수행합니다.









델리게이트 활용 - 함수 넘기기

Csharp 에서는 델리게이트를 이용해 함수를 넘길 수 있습니다.



위와 같이 GetAction 함수의 파라미터에는 델리게이터를 통해 함수를 참조로 넘기게 됩니다.









new Calculator(AddNumbers)로 함수의 참조 객체를 전달하여 출력된 값은 더하기 연산입니다.









델리게이트 활용 - 델리게이트 체인

하나의 델리게이트가 여러 함수를 참조하여 델리게이트 객체를 한번 실행함으로서 등록된 모든 함수를 같이 실행할 수 있습니다.






위와 같이 델리게이트를 하나 만들고 += 연산을 통해 참조를 여러개 연결할 수 있습니다.










결과를 보면 3개의 함수가 묶여서 한번에 실행된 것을 볼 수 있습니다.











델리게이트 활용 - 델리게이트 이벤트

어떠한 조건이 만족되었을 때, 자동으로 함수를 호출하게 하는 델리게이트 이벤트를 사용해보도록 하겠습니다. C# 프로퍼티에 대한 이해가 요구되니, 이전 포스팅을 참조하시고 오길 바랍니다.






 큐브를 5번 클릭하면 큐브의 색이 빨강으로 변하는 예제입니다.  프로퍼티 set 접근자를 이용해서 Hp가 50 이하로 내려가면 이벤트에 연결된 함수들을 실행하는 것 입니다.













5번 클릭하게 되면 상자의 색이 변하고 색상을 print 해주는 결과를 볼 수 있습니다.









반응형