언리얼 델리게이트
[이득우의 언리얼 프로그래밍 수업의 정리]
강한 결합 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를 붙인다.
'Unreal 이론' 카테고리의 다른 글
언리얼 컨테이너 라이브러리 - 구조체, Map (0) | 2024.08.20 |
---|---|
언리얼 컨테이너 라이브러리 - Array, Set (0) | 2024.08.14 |
언리얼 컴포지션 (0) | 2024.08.13 |
언리얼 인터페이스 (0) | 2024.08.08 |
언리얼 프로퍼티 시스템(리플렉션) (0) | 2024.08.04 |