ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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으로 취급됩니다.

    FUNCTIONS -> Override에서 오버라이드 할 수 있습니다.
    Function으로 취급되어 오버라이드 되는 함수

     

    3. Super

     

    더보기

    C++코드에서 상위 클래스의 함수를 호출할때는 Super를 사용할 수 있습니다.

    블루프린트 또한 마찬가지로 상위 함수를 호출하는 기능이 존재합니다.

    함수 시작노드 우클릭 -> Add call to parent function

    위 문단에도 잠시 노출되었지만, 위와 같은 방법으로 상위 함수를 호출할 수 있습니다.

     


     

    C++에서는 블루프린트의 함수를 호출할 수 없습니다.

    하지만 위와 같이 BlueprintNativeEvent를 이용하면 C++에서 호출하되, 구현은 블루프린트에 되어있는 함수를 이용할 수 있습니다.

    개발 과정에서 C++의 숙련도가 낮거나, 디자이너와 같은 비 개발 인원이 블루프린트를 이용해 코드를 작성할 수 있는데, 이러한 방법이 도움이 될 것 같습니다.

     

    감사합니다.

    댓글

Designed by Tistory.