-
[Unreal Engine] UFUNCTION override (C++)Unreal Engine 5._ 2023. 1. 31. 13:57
UFUNCTION은 중복해서 사용할 수 없습니다.
구체적으로, A::Function이 UFUNCTION이고, A를 상속받는 B::Function이 UFUNCTION일 경우
이를 컴파일 하면 다음과 같은 에러와 함께 컴파일이 되지 않습니다.
Override of UFUNCTION in parent class cannot have a UFUNCTION() declaration above it; it will use the same parameters as the original declaration.
이와 관련하여, UFUNCTION함수를 오버라이드 하는 방법을 살펴보도록 하겠습니다.
서론의 에러 메시지는 직관적입니다.
메시지에 따르면 상속 구조에서 상위 클래스의 UFUNCTION은 하위 클래스에 사용할 수 없다고 하고 있습니다.
실제로, 하위 클래스의 UFUNCTION매크로를 삭제할 경우 정상적으로 컴파일 됩니다.
하지만 이를 블루프린트 등지에서 사용할 경우 오버라이드 된 함수가 호출되지 않습니다.
블루프린트에서 타겟으로 설정된 클래스가 상위 클래스이기 때문에 (UFUNCTION 이 있는 함수) 하위 클래스의 함수가 호출되지 않는 것 입니다.
이는 함수를 가상화 하는 것으로 해결할 수 있습니다.
// Ancestor.h public: UFUNCTION(BlueprintCallable) virtual void Function(); // Descendant.h public: virtual void Function() override;
위와 같이 함수를 가상화 하면 UFUNCTION이 선언되어 있지 않더라도 블루프린트에서 호출됩니다.
감사합니다.
'Unreal Engine 5._' 카테고리의 다른 글
[Unreal Engine] UFUNCTION override (BlueprintNativeEvent) (0) 2023.02.07 [Unreal Engine] UFUNCTION UPARAM : Rename, Relocate params (0) 2023.01.31 [Unreal Engine] UFUNCTION Multiple return values (0) 2023.01.26 [Unreal Engine] Forum : Blueprint access C++ static function (0) 2023.01.26 [Unreal Engine] Delay : UKismetSystemLibrary::Delay, SetTimer() (0) 2023.01.24