에디의 우당탕탕 코딩공장

[UE5] 델리게이트 동작 구조

by 인턴 에디

델리게이트 동작 구조

델리게이트(delegate)의 사전적 의미 = 위임하다

델리게이트에 등록된 함수는 특정한 상황이 됐을 때 이벤트처럼 호출된다.

호출자 입장에서는 델리게이트에 누가 함수를 등록해 놨는지 알필요가 없다.

델리게이트를 실행해 주기만 하면 델리게이트에 연결된 함수들이 자동으로 실행된다.

 

델리게이트 매크로 함수

언리얼에서는 델리게이트를 만들기 위해 특정한 매크로들을 제공한다.

매크로의 종류 동작 방식
DECLARE_DELEGATE 델리게이트에 하나의 처리 함수만 등록할 수 있음
DECLARE_MULTICAST_DELEGATE 델리게이트에 여러 개의 처리 함수를 등록할 수 있음
DECLARE_DYNAMIC_DELEGATE C++ 클래스와 블루프린트 둘 다에서 함수 등록할 수 있음

동작 방식에 따른 매크로 함수 분류

 

매크로 종류 매개변수 개수
DECLARE_DELEGATE 0
DECLARE_DELEGATE_OneParam 1
DECLARE_DELEGATE_NineParams 9

매개변수 개수에 따른 델리게이트 매크로 함수 분류

 

델리게이트 만들기

✔ 이름 규칙

언리얼에서는 델리게이트의 이름 앞에 대문자 'F'가 붙는 것을 권장하고 있다.

ex) 'MyDelegate' ❌ →  'FMyDelegate' ⭕

 

✔ 델리게이트 만들기

델리게이트는 매크로 함수를 이용하여 만든다.

매크로 함수의 첫 번째 인자로 델리게이트 이름을 넣어준다.

DECLARE_DELEGATE(FMyDelegate)

 

✔ 매개변수가 있는 델리게이트 만들기

매크로 함수의 인자에 (델리게이트 이름, 자료형 타입) 의 형태로 넣어준다.

// 만약, 2개의 매개변수인 델리게이트를 만들고자 한다면 아래와 같다!
DECLARE_DELEGATE_TwoParams(FMyDelegate, int, float)

 

✔ Dynamic 유형의 매개변수가 있는 델리게이트 만들기

블루프린트에서도 사용할 수 있는 Dynamic 형태인 경우, 매개변수의 변수 이름까지도 지정해주어야한다.

( 델리게이트 이름, 자료형 타입, 변수 이름)

DECLARE_DYNAMIC_DELEGATE_TwoParams(FMyDelegate, int, age, float, speed)

 

델리게이트 활용하기

✔ 델리게이트 선언

FMyDelegate myVar;

 

✔ 델리게이트에 함수 바인딩

BindXXX() 이름의 함수를 사용해서 인자에 델리게이트 매크로 함수의 원형과 같은 매개변수 구조를 갖는 함수를 넣어주면 된다.

함수 이름 매개변수 정보
BindUObject() 처리 함수 소유 객체와 처리 함수의 참조를 매개변수로 요구함
BindUFunction 처리 함수 소유 객체와 처리 함수의 이름을 매개변수로 요구함
BindLambda 처리 함수를 람다 식으로 요구함
BindStatic 처리 함수를 static 함수로 요구함.

 

블로그의 정보

에디의 우당탕탕 코딩 공장

인턴 에디

활동하기