▶ 언리얼 엔진의 델리게이트란?
ㆍ 특정 이벤트가 발생했을 때 호출되는 함수를 참조하는 객체를 말한다.
ㆍ 컴파일 시간에 타입검사를 수행하여 델리게이트가 올바른 타입의 함수를 참조하고 있는지 확인한다.
ㆍ 클래스의 맴버 함수를 참조할 수 있다. 따라서 클래스 인스턴스와 함께 사용할 수 있다.
ㆍ 한번에 여러개의 함수를 호출할 수 있다. 따라서 여러 개체가 동일한 이벤트에 응답하도록 만들 때 좋다
ㆍ 런타임에 델리게이트가 참조하는 함수를 변경할 수 있다.
ㆍ 람다 및 익명함수를 지원한다.
→ 델리게이트는 맴버 함수를 가리키는 자료형 (콜백함수)
ㆍ 쉽게 말해 특정이벤트가 발생하면 발생하는 시점에 해당 이벤트를 처리한다.
※ 잘 사용하면 코드의 결합도를 낮추고 재사용성과 확장성이 늘어날 것 같다.
※ 체력바 업데이트를 할 때 체력 변경을 알리는 델리게이트를 만들고 UI업데이트 함수에 바인딩 하면 효율적일 것 같다.
▶ 델리게이트의 사용
ㆍ 언리얼의 델리게이트는 액터 레벨에서는 상대적으로 사용이 적지만 폰 레벨로 올라가면 사용 빈도가 올라간다.
ㆍ 델리게이트를 이용하면 맴버 변수를 보관하고 호출하는 것이 가능하다
ㆍ 함수를 함수의 반환 값 또는 매개변수로 전달하는 것이 가능하기 때문에 델리게이트가 선호된다
ㆍ 델리게이트는 값 또는 참조로 모두 전달이 가능하지만 메모리 할당을 해야하기 때문에 가급적 참조로 전달해 주는 것이 좋고 이런 설계 방식으로 구현을 해야 체인을 할 때도 별 무리가 없다.
▶ 언리얼 엔진 델리게이트 4가지 유형
1. 싱글 델리게이트
ㆍ 가장 기본적인 형태의 델리게이트로 한 번에 하나의 함수만 바인딩 할 수 있다.
ㆍ 이 함수는 클레스의 맴버 함수일 수도 있고, 전역 함수나 람다 함수일 수도 있다.
2. 멀티캐스트 델리게이트
ㆍ 여러개의 함수를 동시에 바인딩하고 호출할 수 있는 기능
ㆍ 어떤 특정 이벤트가 발생했을 때 여러 개체가 반응하는 경우에 사용된다.
3. 이벤트
ㆍ 싱글과 멀티캐스트와 비슷하지만 호출자가 결과를 반환받을 수 없다.
ㆍ 즉 void리턴타입만 가능하다.
ㆍ 주로 여러 대상에게 통지하는 용도로 사용된다.
4. 다이나믹 델리게이트
ㆍ 다른 3가지 유형의 델리게이트와 달리 다이나믹 델리게이트는 직렬화를 지원한다.
ㆍ 직렬화는 디스크에 저장되거나 네트워크를 통해 전송될 수 있다는 것을 의미한다.
ㆍ 예를들어 게임을 저장하고 로드하는 작업에 사용할 수 있다.
ㆍ C++코드에서 선언된 다이나믹 델리게이트는 블루프린트 내에서 함수를 바인딩하거나 호출할 수 있다.
ㆍ 사용하려면 UFUNCTION 매크로가 붙은 맴버함수만 바인딩 할 수 있다.
※ 정리하다보니 std::Function과 유사한 점이 많은 것 같다.
※ 물론 차이점도 여러가지 보이지만 (싱글 멀티 등) 비슷한 덕분에 이해하는데 오래 걸리지 않았다.
'언리얼엔진 > 블루프린트' 카테고리의 다른 글
AI 플레이어 감지하기 (0) | 2023.10.12 |
---|---|
언리얼 엔진 AI (2) | 2023.10.10 |
UI를 이용한 플레이어 스탯 연동 (0) | 2023.10.08 |
보간과 타임라인을 이용한 움직이는 발판 (0) | 2023.10.08 |
엑터 패트롤 시키기 (0) | 2023.10.08 |