오늘의 목표

언리얼 5강 과제 - 인터페이스

 


 

인터페이스

 

순수 가상 함수 사용 가능

 

인터페이스를 공유하는 아이템 만들 때, 부모쪽에 구현 XX

부모쪽에 구현한 기능을 상속받아서 함께 쓰는 형식은 좋지 않음. 개별 아이템에서 따로 구현할 것

 

// 평생 가지고 있을 아이들이 아님, TWeakObjectPtr 사용
UPROPERTY(EditAnywhere)
TArray<TWeakObjectPtr<AActor>> Items;

보관할 아이템 AActor를 TWeakObjectPtr로 감싸준다. 이렇게 해서 자동으로 언리얼에서 제거하도록 함

 

 

OnFireDetected 라는 함수를 블루프린트에서 사용할 수 있도록 수정해주는 방법

UFUNCTION(BlueprintCallable, BlueprintNativeEvent, Category = "Interface")
void OnFireDetected(float Temperature, FVector HitLocation);

 

virtual, 가상함수(= 0)를 빼고 UFUCNTION(BlueprintCallable, BlueprintNativeEvent)를 넣어준다.

 

델리게이트

 

C++ 전용 AddUObject 바인딩
함수포인터를 직접 참조해서 실행속도가 빠름.
단점: 블루프린트에서 못 쓴다
AddDynamic -> 블루프린트까지 허용하겠다.

 

싱글 1대 1 대응 -> Bind

멀티 1대 다수 -> Add

 

앞부분 Bind/Add

뒷부분 UObject/Dynamic

 

오브젝트, SharedPtr, Lamda, Static, UFUNCTION

 

오브젝트 = 델리게이트.BindUObject(객체, &UMyObject::함수); -> 제일 자주 씀

스마트 포인터 = 델리게이트.BindSP(객체, &UMyObject::함수); 

람다 = 델리게이트.BindLamda([](){});

스태틱 = 델리게이트.BindStatic(객체, &UMyObject::함수); 

UFUNCTION = 델리게이트.BindUFunction(객체, TEXT("함수이름")); 

 

싱글 C++ -> BindUObject

멀티 C++ -> AddUObject

싱글 Dynamic -> BindDynamic

멀티 Dynamic -> AddDynamic

 

블루프린트와 연동하는 Dynamic UFUNCTION() 연결해줘야됨

 

실행을 위한 신호 주기

싱글 1대1 대응 = Execute();

멀티 1대 다수 = Broadcast();

 

싱글캐스트는 반드시 Execute전에 IsBound

싱글은 바인딩이 꼭 되어야 함. (없을 시 크래시)

검사 : MySingleDelegate.IsBound()

MySingleDelegate.Execute()

 

블루프린트로 받아올 경우

c++에서 객체로 만들고, 그 객체를 통해서 블루프린트 델리게이트를 만들어줌

UPROPERTY(BlueprintAssignable)

FDeath OnDeath

 

 

 

'Unreal5 공부 > TIL' 카테고리의 다른 글

2026/06/10 TIL  (0) 2026.06.10
2026/06/05 TIL  (0) 2026.06.05
2026/06/02 TIL  (0) 2026.06.02
2026/06/01 TIL  (0) 2026.06.01
2026/05/29 TIL  (0) 2026.05.29

+ Recent posts