[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 함수로 요구함. |
'Client > UnrealEngine5' 카테고리의 다른 글
[UE5] Enemy AI Pass Finder (0) | 2023.05.20 |
---|---|
[UE5] Animation BluePrint에 상속변수가 안보이는 경우 (0) | 2023.05.19 |
[UE5] LineTrace를 이용한 총알 발사 (0) | 2023.05.12 |
[UE5] C++ 클래스 기반으로 블루프린트 생성하기 (0) | 2023.05.10 |
[UE5] 유틸리티 매크로 작성하기 (0) | 2023.05.10 |
블로그의 정보
농담곰담곰이의곰담농
브이담곰