BLOGブログ

2020.12.11UE4/ C++

【UE4】UDeveloperSettingsでプロジェクト設定に項目を追加する

執筆バージョン: Unreal Engine 4.25

こんにちは。エンジニアの小倉です。
今回はUDeveloperSettingsを使って簡単にプロジェクト設定に項目を追加する方法を紹介します。
ちなみに、UDeveloperSettingsを使わずに項目を追加する方法は、以前のブログでも取り上げました。

[UE4] 「エディタの環境設定」や「プロジェクト設定」に項目を追加する

UDeveloperSettingsを継承する

プロジェクト設定に項目を追加する基本的な手順は以下になります。

1. UObjectを継承したコンフィグ用クラスを作る
2. UPROPERTY(EditAnywhere, Config)をつけた設定用の変数を宣言する
3. ISettingsModuleに作成したコンフィグ用クラスを登録する

ここで、1.で示したコンフィグ用クラスの継承元をUObjectの代わりにUDeveloperSettingsにすると、3.の登録処理を省略できるようになります。3.の登録手順を省略できると、例えば以下のようなメリットがあります。

・登録解除処理の書き忘れを気にしなくて済む
・外部クラスに登録処理を書かなくて済む(コンフィグ用クラス内で完結する)

具体的な実装方法を示します。まず、UDeveloperSettingsを継承したクラスを作成します。

次に、UDeveloperSettingsの関数をオーバーライドして実装します。

オーバーライドする関数の詳細は以下のようになります。

関数名 詳細
GetContainerName() コンテナ名を指定します。ここではProjectEditorのどちらかです。
この関数は基本的にはオーバーライドしません
GetCategoryName() カテゴリ名を指定します。ここではEditor, Engine, Game, などの他に
ユーザー定義のカテゴリ名も指定できます
GetSectionName() セクション名を指定します。ここではクラス名になります。
この関数は基本的にはオーバーライドしません
GetSectionText() プロジェクト設定に表示されるセクション名を指定します。
GetSectionDescription() プロジェクト設定に表示されるセクションの説明を指定します。

プロジェクト設定の項目を追加する

UDeveloperSettingsを継承して、必要な関数をオーバーライドしたら、実際にプロジェクト設定の項目を追加します。これはUPROPERTYでコンフィグ用のメンバ変数であることを明示するだけです。なお、ConfigRestartRequiredというメタ指定子を付けると、項目が変更されたときにエディタのリスタートを促すメッセージが表示されます。

これをプロジェクト設定に表示すると、次のようになります。

なお、各項目は以下のようにアクセスします。