main() blog

プログラムやゲーム、旅、愛する家族について綴っていきます。

【UE5】BlueprintFunctionLibraryを使ってみよう!

概要

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();
}

ログを確認して呼ばれていることを確認します。