はじめに
コンフィギュレーションファイル(DefaultEngine.iniやDefaultGame.ini等)に記述した構造体配列の情報を取り出して、ブループリントで使えるようにする処理の作り方です。
できるようになること
下記のような複数の設定項目をコンフィギュレーションファイルに記載して、
DefaultEngine.ini
[/Script/IniTest.ConfigSetting]
SampleStructs=(SampleParameter1="AAA",SampleParameter2="BBB")
+SampleStructs=(SampleParameter1="CCC",SampleParameter2="DDD")
環境
Unreal Engine 4.27
Visual Studio 2019
Windows10
C++の実装
ConfigSetting.h
#pragma once
#include "CoreMinimal.h"
#include "UObject/NoExportTypes.h"
#include "ConfigSetting.generated.h"
/**
* 構造体
*/
USTRUCT(BlueprintType)
struct FSampleStruct
{
GENERATED_USTRUCT_BODY()
/** パラメーター1 */
UPROPERTY(BlueprintReadWrite, EditAnywhere)
FName SampleParameter1;
/** パラメーター2 */
UPROPERTY(BlueprintReadWrite, EditAnywhere)
FName SampleParameter2;
};
/**
* 構造体配列及びそれを取り出す関数を持つクラス
*/
UCLASS(config = Engine, defaultconfig)
class INITEST_API UConfigSetting : public UObject
{
GENERATED_BODY()
public:
UPROPERTY(EditAnywhere, Config)
TArray<FSampleStruct> SampleStructs;
UFUNCTION(BlueprintCallable)
static TArray<FSampleStruct> GetSampleStructs();
};
ConfigSetting.cpp
#include "ConfigSetting.h"
/** 構造体配列を取り出す関数 */
TArray<FSampleStruct> UConfigSetting::GetSampleStructs()
{
return GetDefault<UConfigSetting>()->SampleStructs;
}
DefaultEngine.iniにデータを記述
DefaultEngine.ini
[/Script/IniTest.ConfigSetting]
SampleStructs=(SampleParameter1="AAA",SampleParameter2="BBB")
+SampleStructs=(SampleParameter1="CCC",SampleParameter2="DDD")
ブループリントで構造体を取得する
コンパイルしてブループリントから値を取り出せるようになります。
(DefaultEngine.iniを変更時はUE4エディタの再起動が必要)
参考サイト
- コンフィギュレーションファイルについて
- 構造体を使わない方法
- プロジェクト設定にも項目を追加したいときの方法