Delegate

2023. 3. 7. 15:18UnrealEngine/개념

디자인 패턴에서 관찰자 패턴(Observer Pattern)이라는 것이 있다.

관찰자 패턴은 발행자(Subject)와 관찰자(Observer)가 존재하고

발행자는 관찰자에 대한 목록을 갖고있고 관찰자는 각각 Callback() 함수를 갖고있다.

이때 발행자가 특정 이벤트를 발생했을때 관찰자들의 Callback 함수가 호출되게 하는 것이 관찰자 패턴이다.

 

관찰자 패턴을 사용하는 이유는 종속성이 없는 일대다 관계를 만들 수 있기 때문이다.

발행자는 관찰자에 대해 알 필요도 없고 관찰자가 몇 명이 있는지 미리 알아야 할 필요도 없다.

발행자는 단지 특정 이벤트를 발생시킬 뿐이고

관찰자가 발행자의 리스트에 자신을 추가하고 이벤트에 대한 응답으로 Callback 함수를 호출하는 것이다.


언리얼 엔진도 델리게이트(Delegate)라는 이름으로 이러한 관찰자 패턴을 사용한다.

 

 

발행자(오브젝트)는 델리게이트라는 대리인을 만들 수 있다.

관찰자는 이러한 델리게이트에 자신을 추가하고 Callback 함수를 지정한다.

델리게이트는 개발자가 원하는 상황에서 이벤트를 발생시켜 Callback 함수를 호출하도록 하는데 이러한 것을 Broadcast라고 한다.

 

델리게이트는 Broadcast시 특정 파라미터를 같이 보낼 수 있다. 그러므로 Callback 함수도 이러한 파라미터를 받을 수 있도록 작성되어야 한다.
이러한 점 때문에 파라미터를 통해서 Callback 함수가 델리게이트에 바인딩 될 수 있다는 서명 역할도 하게된다.

 

대표적으로 Overlap과 Hit 이벤트들도 델리게이트를 사용한다.

 

UPrimitiveComponent에 미리 정의된 델리게이트들
Overlap이란 델리게이트의 Broadcast에 OnComponentBeginOverlap이라는 Callback함수를 바인딩.
델리게이트와 바인딩된 함수의 파라미터가 다르다면 오류가 발생한다.

'UnrealEngine > 개념' 카테고리의 다른 글

Unreal Interface  (0) 2023.03.17
IK 릭 애니메이션 리타기팅  (0) 2023.03.08
Unreal Foot IK  (0) 2023.03.07
IK(Inverse Kinematic, 역운동학)  (0) 2023.03.07
Enhanced Input(향상된 입력)  (0) 2023.03.01