LoginSignup
4
3

More than 1 year has passed since last update.

[UE4,C++] Configファイル内の構造体配列をブループリントで使用する

Posted at

はじめに

コンフィギュレーションファイル(DefaultEngine.iniやDefaultGame.ini等)に記述した構造体配列の情報を取り出して、ブループリントで使えるようにする処理の作り方です。

できるようになること

下記のような複数の設定項目をコンフィギュレーションファイルに記載して、

DefaultEngine.ini
[/Script/IniTest.ConfigSetting]
SampleStructs=(SampleParameter1="AAA",SampleParameter2="BBB")
+SampleStructs=(SampleParameter1="CCC",SampleParameter2="DDD")

下記のようにブループリントで値を使えるようにします。
image.png

環境

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エディタの再起動が必要)
image.png

参考サイト

  • コンフィギュレーションファイルについて

  • 構造体を使わない方法

  • プロジェクト設定にも項目を追加したいときの方法

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3