언리얼 엔진에서 C++을 이용하여 블루프린트에서 사용할 함수노드 만들기
원문참조 : https://wiki.unrealengine.com/Blueprints,_Creating_C%2B%2B_Functions_as_new_Blueprint_Nodes
언리얼 엔진에서는 블루프린트에서 함수노드로 사용할 수 있도록 C++ 클래스가 준비되어 있다. Blueprint Function Library 클래스의 파생 클래스에 static 함수를 선언하면 다른 블루프린트 그래프에서 해당 함수를 바로 검색하여 노드를 추가할 수 있게 된다
블루프린트 프로젝트를 생성한다
Content Browser에서 마우스 우측 > 새 C++ 클래스 > 부모클래스 선택 : [모든 클래스]에 체크 > Blueprint Function Library 검색하여 선택 > 저장경로를 지정하거나 디폴트로 두고 진행하면 Visual Studio가 실행되면서 에디터에 헤더파일(*.h)과 소스파일(*.cpp)이 생성된다.
생성된 파일의 내용에 아래처럼 적색으로 표시한 내용을 추가하고 저장한 후에 다시 언리얼 메인 에디터의 툴바에서 [컴파일]을 누르고 컴파일이 완료되었다는 메시지가 나타나면 다른 블루프린트에서 이 함수를 호출할 수 있다. 만약 문법적인 오류가 있다면 컴파일 실패 메시지가 뜬다. Visual Studio에서는 컴파일이나 빌드를 실행할 필요가 없다. Visual Studio에서는 코드에 오류가 없는데도 불구하고 오류가 있는 것처럼 코드에 적색라인으로 표시되는 경우가 있는데 이 때는 신경쓰지 않고 저장 후에 언리얼 툴바에서 [컴파일] 버튼을 눌러 컴파일해보면 오류 여부를 알 수 있다. 언리얼 툴바에서 컴파일 후에는 다른 블루프린트 그래프에서 라이브러리 함수를 노드로 추가하여 사용할 수가 있다
헤더파일의 내용
#include "CoreMinimal.h"
#include "Kismet/BlueprintFunctionLibrary.h"
#include "MyBlueprintFunctionLibrary.generated.h"
UCLASS()
class BP_CPP_API UMyBlueprintFunctionLibrary : public UBlueprintFunctionLibrary
{
GENERATED_BODY()
UFUNCTION(BlueprintCallable,Category="TestFunction")
static FString MySampleFunction(FString str);
};
소스파일의 내용
// Fill out your copyright notice in the Description page of Project Settings.
#include "MyBlueprintFunctionLibrary.h"
FString UMyBlueprintFunctionLibrary::MySampleFunction(FString str)
{
return str;
}
언리얼 메인 에디터에서 C++코드를 컴파일한다
다른 블루프린트의 그래프에서 라이브러리 함수를 호출(함수 노드 추가)한다