【UE4】GlobalUserConfigで独自のプロジェクト設定を追加

エディタを拡張し、Project SettingsやEditor Preferencesに項目を追加することができます。こちらに詳しく書いてあります。


historia.co.jp



作る流れは同じで、C++でクラスを作成していきます。

違う点はプロパティを保持するクラスの指定子だけです。


DefaultConfig

UCLASS(config=Game, defaultconfig)
class MyProject_API UMyGlobalSettings : public UObject
{
GENERATED_UCLASS_BODY()
};

GlobalUserConfig

UCLASS(config=Game, globaluserconfig) // ←ここ
class MyProject_API UMyGlobalSettings : public UObject
{
GENERATED_UCLASS_BODY()
};

このコンフィグ設定は強制的に"C:\Users\UserName\AppData\Local\Unreal Engine\Engine\Config\UserGame.ini"に保存され、チーム開発などでも他のユーザーと共有されません。

では、なぜローカルなのにグローバルなのか...それはプロジェクトをまたいで同じ.iniファイルを読み込んでしまうからです。
デフォルトである設定項目では、
"Rendering Overrides(Local)", "HTML5 SDK", "Android SDK"で使われています。

つまり、これらの設定をあるプロジェクトで設定すると他のプロジェクトでも同じ値が設定されます。
ですので使う際は全てのプロジェクトで共有の設定をしたい場合に活用すると良いかもしれません。そんなケースなかなかないが...(´・ω・`)


コンフィグ設定は他にもありますが、GlobalUserConfigは優先度が一番高く設定されていて他のコンフィグ設定は無視されてしまいます。
特に一度GlobalUserConfigを使ってUserGame.iniに書き込んでしまうと手動で消さない限りはコード上GlobalUserConfigを使っていなくてもUserGame.iniを読みにいってしまうので注意が必要です。

プロジェクトを超えずにローカルで使える他のコンフィグ設定もあるので気が向いたら書きたいと思います:P