언리얼 엔진 5/공부

[언리얼 엔진 5] BlueprintNativeEvent에 대해서, 사용 시 주의할 점

ciel45 2023. 12. 17. 21:38

https://docs.unrealengine.com/5.3/ko/ufunctions-in-unreal-engine/

 

UFunctions

게임플레이 클래스용 함수 생성 및 구현에 대한 개요입니다.

docs.unrealengine.com

함수 지정자 목차에 관련 내용이 있다.

 

 

 

함수에 UFUNCTION(BlueprintNativeEvent) 매크로를 달아주면, 함수의 기본 정의는 C++ 클래스에 구현해놓고 블루프린트에서 이를 확장, 또는 대체하는 것이 가능하다.

 

 

 

기본 C++ 문법의 가상함수와 비슷하다. 기본적인 구현이 되어있지만, 서브클래스에서 오버라이딩 할 수 있다.

 

 

 

UFUNCTION(BlueprintImplementableEvent)가 C++ 코드에서는 헤더에 함수의 선언만 해놓고, 그 구현을 블루프린트에 완전히 맡기는 것과는 대조적이다.

 

 

그런데, 원래 하던대로 .h에

UFUNCTION(BlueprintNativeEvent) 
void MyFunction(); //선언

 

.cpp에

void MyClass::MyFunction()
{
	// ~~~구현~~~~
}

 

이렇게 작성할 시 컴파일 에러가 발생한다.

 

 

왜냐하면, BlueprintNativeEvent인 함수를 구현할 때는 구현부의 함수명 뒤에 _Implementation을 붙여주어야 하기 때문이다.

 

따라서, .cpp 내부 함수 구현은

void MyClass::MyFunction_Implementation()
{
	// ~~~구현~~~~
}

 

이렇게 되어야한다.

 

 

비주얼 스튜디오에서는 함수명 부분에 빨간 밑줄을 그으며 경고할 것이다.

하지만 그대로 컴파일하면 문제없이 실행이 가능하다.