[Unreal/C++] BlueprintNativeEvent, BlueprintImplementableEvent
언리얼에서는 협업을 위한 블루프린트 기능을 제공한다.
프로그래머는 기능을 구현해 확인을 받고 수정을 거듭한다.
확인 한 번에 "OK"가 떨어진다면 금상첨화겠지만, 대부분의 기능들은 조금씩 수정되기 마련이다.
거듭되는 수정에 지친 프로그래머는 관계자에게 직접 수정하라고 하지만 관계자는 C++에 대한 지식이 없다.
이 때 필요한 것이 BlueprintNativeEvent와 BlueprintImplementableEvent다.
BlueprintNativeEvent는 블루프린트에서 덮어쓸 수 있도록 지정하는 것이다.
UFUNCTION(BlueprintNativeEvent) 매크로를 설정한 후 기존에 구현되어 있던 함수 내용은
함수명 뒤에 "_Implementation"을 덧붙여 구현한다.
대상 함수를 오버라이드한 것을 블루프린트에서 찾지 못하면 _Implementation이 붙은 함수가 실행되는 것이다.
UFUNCTION(BlueprintNativeEvent)
void BlueprintOverride(); // 블루프린트에서 덮어쓸 친구
void BlueprintOverride_Implementation(); // 기존 구현 내용
C++ 개발자는 구현했던 내용을 _Implementation에 백업해 놓고 이벤트 함수만 빼놓는 격이다.
C++에서는 대상함수 원형을 호출하면 된다. 위 코드를 예시로 들자면 BlueprintOverride();를 호출하면 블루프린트에 구현되어 있을 경우 블루프린트 함수를 실행하고 블루프린트에 구현되어 있지 않다면 _Implementation이 붙은 함수를 실행하게 된다.
Ex) 이해를 돕기 위한 BlueprintNativeEvent if
if(BlueprintOverride()가 블루프린트에서 구현됌?)
{
BlueprintOverride();
}
else
{
BlueprintOverride_Implementation();
}
즉, 난 이렇게 구현해 놓았는데 너가 필요하면 재정의 해서 사용해 ! 이다.
그렇다면 BlueprintImplementableEvent는 무엇일까?
BlueprintImplementableEvent는 BlueprintNativeEvent와 비슷하지만 C++내에 정의된 내용이 없다는 것이다.
UFUNCTION(BlueprintImplementableEvent)
void BlueprintOverride();
이 매크로 또한 블루프린트에서 재정의 해야하며, 구현이 되어있지 않을 경우 무시된다.
Ex) 이해를 돕기 위한 BlueprintImplementableEvent if
if(BlueprintOverride()가 블루프린트에서 구현됌?)
{
BlueprintOverride();
}
즉, 만들어는 놨으니 정의하세요 ! 이다.
두 매크로는 모두 블루프린트에서 함수명으로 이벤트를 구현할 수 있다.
부모의 호출이 필요한 경우 노드에 우클릭하여 부모노드를 생성해 연결시켜주면 된다.
'Unreal > Manual' 카테고리의 다른 글
Unreal 언리얼 데디케이티드 서버(Dedicated Server) 셋팅 (2) (0) | 2023.11.14 |
---|---|
Unreal 언리얼 데디케이티드 서버(Dedicated Server) 셋팅 (1) (0) | 2023.11.14 |
Unreal C++ Dynamic Delegate (다이나믹 델리게이트) (0) | 2023.11.03 |
Unreal C++ Custom Event (0) | 2023.11.03 |
Unreal C++ 언리얼 Delegate 델리게이트 (0) | 2023.11.02 |