概要
BlueprintFunctionLibraryはC++で作成した関数をブループリントで呼び出す場合に使用します。
ちょっとしたユーティリティクラスなどの関数をブループリントで呼び出すことができます。
環境
UnrealEngine 5.4.2
実装
ソースファイルの作成
ツール → 新規C++クラス もしくは コンテンツドロワーのC++のフォルダのプロジェクト以下で右クリックの新規C++クラスを選択します。
C++クラスの追加でブループリント関数ライブラリを選択します。
任意のファイル名を指定して作成します。
ヘッダとソースのファイルが追加されます。
ヘッダーファイルとソースファイルに以下のコードが追加されています。
#pragma once #include "CoreMinimal.h" #include "Kismet/BlueprintFunctionLibrary.h" #include "MyBlueprintFunctionLibrary.generated.h" /** * */ UCLASS() class HOGE_API UMyBlueprintFunctionLibrary : public UBlueprintFunctionLibrary { GENERATED_BODY() };
コードの編集
Test()の関数を追加します。
static関数で定義する必要があります。
#pragma once #include "CoreMinimal.h" #include "Kismet/BlueprintFunctionLibrary.h" #include "MyBlueprintFunctionLibrary.generated.h" /** * */ UCLASS() class HOGE_API UMyBlueprintFunctionLibrary : public UBlueprintFunctionLibrary { GENERATED_BODY() UFUNCTION(BlueprintCallable, Category = "MyBlueprintFunctionLibrary") static void Test(); };
#include "MyBlueprintFunctionLibrary.h" void UMyBlueprintFunctionLibrary::Test() { UE_LOG(LogTemp, Log, TEXT("call : UMyBlueprintFunctionLibrary::Test()")); }
ブループリントからの呼び出し
追加した関数のノードを呼び出します。
実行してログを確認して呼ばれていることが確認できます。
C++だけで使用する場合
C++クラスを追加で”なし”を選択します。
#pragma once #include "CoreMinimal.h" /** * */ class HOGE_API HogeUtility { public: HogeUtility(); ~HogeUtility(); };
#include "HogeUtility.h" HogeUtility::HogeUtility() { } HogeUtility::~HogeUtility() { }
UEのコーディング規約でUObjectやAActorなどを継承しないクラスにはプレフィックスFを付けることになっています。
デフォルトのコンストラクタ、デストラクタは不要となるので削除します。
#pragma once #include "CoreMinimal.h" /** * */ class HOGE_API FHogeUtility { public: };
関数を追加します。
#pragma once #include "CoreMinimal.h" /** * */ class HOGE_API FHogeUtility { public: static void Test(); };
#include "HogeUtility.h" void FHogeUtility::Test() { UE_LOG(LogTemp, Log, TEXT("call : FHogeUtility::Test()")); }
関数の呼び出しは以下の様に行います。
#include "HogeUtility.h" void hoge { FHogeUtility::Test(); }
ログを確認して呼ばれていることを確認します。