이 글은 PC 버전 TISTORY에 최적화 되어있습니다.
서론
델리게이트라는 것은 함수에 대한 참조라고 생각하면 됩니다. 하나의 델리게이트로 여러 함수들에 접근해 실행할 수 있습니다. 또한 델리게이트를 이용해 함수를 파라미터로 전달할 수 있고, 여러 함수를 한꺼번에 실행하는 체인 기능과, 어떤 상황에 도달했을 때, 이벤트를 발생시키는 델리게이트 이벤트도 제공되어집니다.
델리게이트 기본 사용법
델리게이트는 기본적으로 함수와 형태가 같게 만들어집니다. 아래 delegate 를 보면 참조할 AddNumbers와 SubNumbers 함수의 형태와 같은 것을 볼 수 있습니다. 그리고 참조변수와 같기 때문에 객체를 생성합니다. 괄호 안에는 참조할 함수를 넣는 것입니다.
실행하면 AddNumbers 를 참조하는 delegate에 값을 넣었기 때문에 더하기 연산을 수행합니다.
델리게이트 활용 - 함수 넘기기
Csharp 에서는 델리게이트를 이용해 함수를 넘길 수 있습니다.
위와 같이 GetAction 함수의 파라미터에는 델리게이터를 통해 함수를 참조로 넘기게 됩니다.
new Calculator(AddNumbers)로 함수의 참조 객체를 전달하여 출력된 값은 더하기 연산입니다.
델리게이트 활용 - 델리게이트 체인
하나의 델리게이트가 여러 함수를 참조하여 델리게이트 객체를 한번 실행함으로서 등록된 모든 함수를 같이 실행할 수 있습니다.
위와 같이 델리게이트를 하나 만들고 += 연산을 통해 참조를 여러개 연결할 수 있습니다.
결과를 보면 3개의 함수가 묶여서 한번에 실행된 것을 볼 수 있습니다.
델리게이트 활용 - 델리게이트 이벤트
어떠한 조건이 만족되었을 때, 자동으로 함수를 호출하게 하는 델리게이트 이벤트를 사용해보도록 하겠습니다. C# 프로퍼티에 대한 이해가 요구되니, 이전 포스팅을 참조하시고 오길 바랍니다.
큐브를 5번 클릭하면 큐브의 색이 빨강으로 변하는 예제입니다. 프로퍼티 set 접근자를 이용해서 Hp가 50 이하로 내려가면 이벤트에 연결된 함수들을 실행하는 것 입니다. |
5번 클릭하게 되면 상자의 색이 변하고 색상을 print 해주는 결과를 볼 수 있습니다.
반응형
'Frontend > Unity' 카테고리의 다른 글
[유니티 기초] Time.deltaTime (7) | 2016.08.04 |
---|---|
[유니티 트랜스폼] 이동 (Move) (5) | 2016.08.04 |
[유니티 실전 예제] 씬 전환 (10) | 2016.08.04 |
[유니티 디버깅] ⑥ 에디터 디버깅 (0) | 2016.08.03 |
[유니티 디버깅] ④ 시각적 디버깅 (0) | 2016.08.03 |
[유니티 디버깅] ③ 플래그를 이용한 디버깅 (0) | 2016.08.03 |