Delegate

Taegang Yun·2024년 6월 8일
0

Unreal

목록 보기
7/11

발행-구독 패턴

발행자와 구독자, 그 사이에 중개인이 있는 패턴.
발행자는 중개인에게 컨텐츠가 생산되었음을 알림.
중개인은 구독자에게 컨텐츠가 생산되었음을 알림.
발행자와 구독자는 서로를 몰라도 중개인을 통해 컨텐츠를 생산하고 소비할 수 있음.

발행-구독 패턴의 장단점

의존성 줄이기와 똑같음.
발행자는 중개인과의 통신만 잘 연결하면 끝. 굳이 구독자까지 신경 쓸 필요가 없음.
구독자도 중개인과의 통신만 잘 연결하면 끝. 한 쪽에 문제가 생겨도 다른 쪽에 영향 없음.
이는 유지보수가 쉽다는 것을 뜻함.
다만 서로 반대 쪽의 상황을 알 수가 없음. 무슨 일이 벌어지는지 자세히 파악할 수 없음.
마치 셀프 이사와 포장 이사 느낌.

언리얼에서의 발행-구독 패턴

언리얼에서는 델리게이트 기능을 제공함.
델리게이트의 사전적 의미는 대리자. 위에서 설명한 중개인과 같은 역할.
델리게이트는 발행자를 위한 Broadcast() 함수와 구독자를 위한 Add() 함수를 제공함.
컨텐츠가 발행되면 발행자가 Broadcast() 함수를 호출하고,
그걸 구독하기 위해 Add() 함수를 호출. 특정 이벤트 발생 시에 호출되어질 함수 등록.

언리얼 델리게이트 선언 매크로

DECLARE{델리게이트 유형}_DELEGATE{바인드 될 함수 명세}

델리게이트 유형

델리게이트 유형은 전달 방식과 프로그래밍 언어에 따라 결정됨.
발행자와 구독자가 1:1로 주고 받는지 Vs. 발행자와 구독자가 1:N으로 주고 받는지
C++로만 사용할 것인지 Vs. C++과 블루프린트에서 사용할 것인지

1:1, C++
DECLARE_DELEGATE
1:N, C++
DECLARE_MULTICAST_DELEGATE
1:1, C++ and Blueprint
DECLARE_DYNAMIC_DELEGATE
1:N, C++ and Blueprint
DECALRE_DYNAMIC_MULTICAST_DELEGATE

  • 바인드 될 함수 명세
    매개변수 없음, 반환값 없음
    공란. ex) DECLARE_DELEGATE
    매개변수 1개, 반환값 없음
    OneParam ex) DECLARE_DELEGATE_OneParam
    매개변수 3개, 반환값 있음
    (매개변수는 최대 9개까지 가능)
    RetVal_ThreeParams
    ex) DECLARE_DELEGATE_RetVal_ThreeParams

  • 델리게이트 바인드 함수
    Bind - 1:1 델리게ㅣ트
    Add - 1:N
    AddDynamic() 1:N 다이나믹 델리게이트에 바인드
    AddUObject() 1:N 델리게이트에 멤버함수 바인드
    AddUFunction() 1:N 델리게이트에 UFUNCTION 멤버함수 바인드

profile
언젠간 전문가가 되겠지

0개의 댓글