반응형
UFUNCTION 매크로에 BlueprintNativeEvent 라는 지정자를 넣어줄 수 있다.
이 지정자의 의도는 기본적으로 우리가 C++에서 함수 구현을 할 것이지만, 필요하다면 블루프린트에서 함수 재정의를 할 수 있도록 허락한다는 것이다. 만약 블루프린트에서 재정의를 했다면 재정의된 함수를 호출하고, 재정의가 되어 있지 않다면 기존 C++ 구현 함수를 호출하도록 언리얼 헤더 툴이 무언가 작업을 해준다.
좀 더 자세히 살펴보면,
우선 이 지정자를 사용하고 싶다면, 우리는 총 2개의 함수를 선언해야 한다. 예를 들어 다음과 같이 Func이라는 이름의 함수를 선언하고 싶다면, 추가로 Func_Implementation 이라는 이름의 가상 함수도 선언해야 한다.
UFUNCTION(BlueprintNativeEvent)
void Func();
virtual void Func_Implementation(); // [FunctionName]_Implementation
위와 같이 선언 후 우리는 Func_Implementation()만 구현한다. 그리고 Func()은 구현부를 작성하지 않고 그대로 둔다.
그러면 언리얼 헤더 툴이 전처리 작업에서 Func()의 구현부를 다음과 같이 작성해준다.
void Func()
{
if(블루프린트에서 오버라이딩 되었다면)
// 오버라이딩된 블루프린트 함수 호출
else
Func_Implementation();
}
위 내용을 이해하면 알겠지만, 우리가 직접 구현하는 함수는 Func_Implementation() 이지만 해당 함수를 사용하고 싶다면 Func() 함수를 호출해야 한다. 그래야 케이스에 따라 블루프린트에서 재정의된 함수를 호출할지 C++ 구현 함수를 호출할지를 결정할 수 있기 때문이다.
'게임 공부 > Unreal Engine' 카테고리의 다른 글
[UE4] UWorld::SpawnActorDeferred() (0) | 2023.01.03 |
---|---|
[UE4] 게임 인스턴스 및 게임 모드 (0) | 2022.12.17 |
언리얼 빌드 툴, 언리얼 헤더 툴이란? (0) | 2022.01.16 |
액터와 컴포넌트, 폰 (0) | 2022.01.11 |
[Battery Collector] 언리얼 튜토리얼 - 1 (0) | 2022.01.08 |
댓글