언리얼 델리게이트

Unreal 이론|2024. 8. 14. 15:22

[이득우의 언리얼 프로그래밍 수업의 정리]

 

강한 결합 vs 느슨한 결합

강한 결합: 클래스들이 서로 의존성을 가지는 경우

느슨한 결합: 실물에 의존하지 말고 추상적 설계에 의존

-> 호텔 출입 카드와 각 호실의 관계를 예로 들었을 때 Card 자체를 Person 클래스 멤버 변수 타입 등으로 정의한다면, Card 클래스가 없다면 Person 클래스를 정의할 수 없으며 코드 수정시 대부분의 코드를 수정해야함

-> 출입 확인을 위해 Card 클래스를 만들었다면 출입에 관련된 추상적인 설계에 의존

-> ICheck 라는 클래스에서 출입 확인만 하는 추상 가상함수를 생성해 Card가 상속받게 함으로써 Person이 Card에 의존하지 않는 느슨한 결합 구조로 설계

-> 이런 설계 구조는 유지 보수를 손쉽게 함

 

하지만 매번 인터페이스 만들기 귀찮다 -> 함수를 오브젝트처럼 관리 -> 델리게이트 활용

 

델리게이트 선언시 고려사항

-> 어떤 데이터를 전달하고 받을것인지, 인자의 수와 각 타입을 설계

(몇개의 인자를 전달할지, 일대일로 전달, 일대다로 전달 등)

-> 프로그래밍 환경설정

(C++ 프로그래밍에서만 사용할지, UFUNCTION으로 지정된 블루프린트 함수와 사용할지)

-> 어떤 함수와 연결할 것인지

(클래스 외부에 설계된 C++ 함수와 연결, 전역에 설계된 정적 함수와 연결, 언리얼 오브젝트의 멤버 함수와 연결(대부분의 경우))

 

선언 매크로

-> DELCARE_{델리게이트 유형}DELEGATE{함수정보}

1) 델리게이트 유형 : 어떤 유형의 델리게이트인지 구상

    - 일대일 형태로 C++만 지원하면 유형은 공란으로 둔다

      DECLARE_DELEGATE

    - 일대다 형태로 C++만 지원하면 MULTICAST 선언

      DECLARE_MULTICAST

    - 일대일 형태로 블루프린트 지원하면 DYNAMIC 선언

      DECLARE_DYNAMIC

    - 일대다 형태로 블루프린트 지원하면 DYNAMIC과 MULTICAST 조합

      DECLARE_DYNAMIC_MULTICAST

2) 함수 정보 : 연동 될 함수 형태를 지정한다

    - 인자 없고 반환값 없음 -> 공란

    - 인자 하나, 반환값 없음 -> OneParam (DECLARE_DELEGATE_OneParam)

    - 인자 셋, 반환값 있음 -> RetVal_ThreeParams (DECLARE_DELEGATE_RetVal_ThreeParams)

    - 파라미터는 최대 9개까지 지원

 

상호 의존성을 최대한 없애야 함

-> 하나의 클래스는 하나의 작업에만 집중하도록 설계

-> 클래스간 서로 헤더를 참조하지 않도록 신경쓸것

 

델리게이트 이름은 보통 맨 앞에 F를 붙이고, 맨 뒤에 Signature를 붙인다.

 

댓글()