-
[Unreal Engine] UFUNCTION override (BlueprintNativeEvent)Unreal Engine 5._ 2023. 2. 7. 12:23
지난 글 (UFUNCTION override (C++))에서, UFUNCTION선언을 한 C++함수를 C++에서 오버라이드 하는 방법을 살펴보았습니다.
C++의 함수를 블루프린트에서 오버라이드 하는 방법은 조금 다릅니다.
이번 글에서는 C++의 함수를 블루프린트에서 오버라이드 하는 방법을 살펴보도록 하겠습니다.
1. BlueprintNativeEvent
더보기C++의 UFUNCTION을 오버라이드하려면 특별한 과정을 거쳐야 합니다.
첫 번째로, 오버라이드 하려는 함수는 UFUNCTION매크로에 BlueprintNativeEvent인자를 지정해야 합니다.
두 번째로, 특정한 함수를 추가해야 합니다.
위 두가지 과정을 거친 코드는 아래와 같습니다.
UFUNCTIONO(BlueprintNativeEvent) void VirFunction(); virtual void VirFunction_Implementation();
두 번째의 특정한 함수란, 가상함수 선언이 된 {함수명}_Implementation 함수 입니다.
세 번째로, 위의 {함수명}_Implementation 함수를 구현합니다. (기존 함수는 선언만 합니다.)
위와 같이 코드를 작성할 경우, 블루프린트에서 해당 함수를 오버라이드 할 수 있습니다.
2. Override Event, Function
더보기위 문단에서 오버라이드 하는 함수가 이벤트인 이유는, 해당 함수의 반환형이 void이기 때문입니다.
UFUNCTION(BlueprintNativeEvent) int32 VirFunction2(int32 A); virtual int32 VirFunction2_Implementation(int32 A); UFUNCTION(BlueprintNativeEvent) void VirFunction3(int32 A, int32& B); virtual void VirFunction3_Implementation(int32 A, int32& B);
만약 위 함수와 같이 함수의 반환형이 존재할 경우 (참조를 통한 반환 포함) 해당 함수는 블루프린트에서 Function으로 취급됩니다.
3. Super
더보기C++코드에서 상위 클래스의 함수를 호출할때는 Super를 사용할 수 있습니다.
블루프린트 또한 마찬가지로 상위 함수를 호출하는 기능이 존재합니다.
위 문단에도 잠시 노출되었지만, 위와 같은 방법으로 상위 함수를 호출할 수 있습니다.
C++에서는 블루프린트의 함수를 호출할 수 없습니다.
하지만 위와 같이 BlueprintNativeEvent를 이용하면 C++에서 호출하되, 구현은 블루프린트에 되어있는 함수를 이용할 수 있습니다.
개발 과정에서 C++의 숙련도가 낮거나, 디자이너와 같은 비 개발 인원이 블루프린트를 이용해 코드를 작성할 수 있는데, 이러한 방법이 도움이 될 것 같습니다.
감사합니다.
'Unreal Engine 5._' 카테고리의 다른 글
[Unreal Engine] SetTimer() : Passing parameters (0) 2023.02.24 [Unreal Engine] IsA : Object type check in C++ (0) 2023.02.17 [Unreal Engine] UFUNCTION UPARAM : Rename, Relocate params (0) 2023.01.31 [Unreal Engine] UFUNCTION override (C++) (0) 2023.01.31 [Unreal Engine] UFUNCTION Multiple return values (0) 2023.01.26