2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

UE4 Configファイルから設定を取得する

Posted at

概要

UnrealEngine4のConfigファイルの設定を取得するための方法メモです。

参考

以下の記事を参考にいたしました、ありがとうございます。
UE4公式:FConfigFile::GetString
設定ファイルのヒミツ
#Config Files, Read & Write to Config Files

環境

Windows10
Visual Studio 2017
UnrealEngine 4.26

Configファイルについて

UEエディタで設定されるプロジェクト設定などが入っているデータファイルです。
[Config]フォルダ以下に置かれています。

実行例

関連コード

"Engine\Source\Runtime\Core\Public\Misc\ConfigCacheIni.h"

FConfigFileを使った取得

例えば以下のような ini ファイルとセクションがあったとします。

DefaultEngine.ini
[/Script/Engine.Engine]
bAllowMultiThreadedAnimationUpdate=False
SmoothedFrameRateRange=(LowerBound=(Type=Inclusive,Value=20.000000),UpperBound=(Type=Exclusive,Value=60.000000))
bUseFixedFrameRate=True
FixedFrameRate=60.000000
DefaultTimecodeFrameRate=(Numerator=60,Denominator=1)

エディタで見ると以下のようになっています。
ProjectSetting.png

上記iniファイルから FixedFrameRate を取得する場合、GConfigから取得できます。以下コード例

サンプルコード
#include "Misc/ConfigCacheIni.h"

FString _FrameRate = FString(TEXT(""));

// 設定取得
bool _IsRet = GConfig->GetString(TEXT("/Script/Engine.Engine"), TEXT("FixedFrameRate"), _FrameRate, GEngineIni);

if( _IsRet ){
	UE_LOG(LogTemp, Log, TEXT("FrameRate = %s"), *_FrameRate);
}else{
	UE_LOG(LogTemp, Log, TEXT("??????"));
}

// 結果 > FrameRate = 60.000000 

上記例ではStringで取得していますが、GetInt GetFloat GetBool 等の型に応じてメソッドを使い分けて取得が可能です。

その他のiniファイルの取得

iniファイル名を切り替えると取得ができます。
エンジン用iniファイル名GEngineIni以外だと
GGameIni GInputIni GGameUserSettingsIni があり適宜設定の必要があります。
 
以下、DefaultGame.ini から設定を取得するコード例。

DefaultGame.ini
[/Script/EngineSettings.GeneralProjectSettings]
ProjectID=012345678901234567890123456789AB
ProjectName=MyTestProject
Description=マイテストプロジェクト
サンプルコード

FString _Description = FString(TEXT(""));
bool _Ret = GConfig->GetString(TEXT("/Script/EngineSettings.GeneralProjectSettings"), TEXT("Description"), _Description, GGameIni);
			
UE_LOG(LogTemp, Log, TEXT("%s"), *_Description);

各Platformでの RuntimeSettings を使った取得

プラットフォームに応じた {Platform}RuntimeSetting モジュールがある場合、それを .uprojectに追加することで設定クラス経由で取得が可能なようです。

サンプル
#if PLATFORM_{Platform名}
#include "{Platform名}RuntimeSettings/Classes/{Platform名}RuntimeSettings.h"
#endif

static const U{Platform}RuntimeSettings* Settings = GetDefault<U{Platform}RuntimeSettings>();
if (Settings){
	// SampleString という設定を表示
	UE_LOG(LogTemp, Log, TEXT("%s"), *Settings->SampleString);
}


まとめ

FConfigFileクラスで設定を書き換えることも可能ですので、自作ツールで設定を書き換える場合使えるかも。Configを取得するケースは少ないと思いますが、場合によって必要なこともあるかもしれません。

2
4
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
2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?