関連ブログ
- [UE4][UE5]開発環境の容量を少しでも減らす 2024.08.14UE
- [UE5] PushModel型のReplicationを使い、ネットワーク最適化を図る 2024.05.29UE
- [UE5]マテリアルでメッシュをスケールする方法 2024.01.17UE
CATEGORY
2016.01.28UE4UE/ C++
改訂バージョン: Unreal Engine 4.21 |
今回は、C++でエディタ機能を拡張して「エディタの環境設定」や「プロジェクト設定」ウィンドウ内に、独自の項目を追加する方法をご紹介します。
いきなりですが、ソースコードです。
まずは、設定項目をプロパティとして保持するクラスを用意します。
デフォルト値はコンストラクタで設定しておきましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
}; // Fill out your copyright notice in the Description page of Project Settings. #pragma once #include "CoreMinimal.h" #include "Settings/EditorSettings.h" #include "MyEditorSetting.generated.h" /** * */ UCLASS(config = Editor/* ※1 */, defaultconfig) class MyProject_API UMyEditorSetting : public UObject { GENERATED_UCLASS_BODY() public: UPROPERTY(EditAnywhere, config, Category = MySetting) bool Check0; UPROPERTY(EditAnywhere, config, Category = MySetting) int32 Value0; }; |
1 2 3 4 5 6 7 8 9 10 11 |
// Fill out your copyright notice in the Description page of Project Settings. #include "MyEditorSetting.h" #include "MyProject.h" UMyEditorSetting::UMyEditorSetting(const FObjectInitializer& ObjectInitializer) : Super(ObjectInitializer) , Check0(true) , Value0(123) { } |
続いて、このクラスをSettingModuleに登録します。
これは、モジュールのStartupModule()とShutdownModule()をオーバーライドして行います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
// Fill out your copyright notice in the Description page of Project Settings. #include "MyProject.h" #include "Modules/ModuleManager.h" #include "ISettingsModule.h" #include "MyEditorSetting.h" #define LOCTEXT_NAMESPACE "" class FMyProjectModule : public FDefaultGameModuleImpl { virtual void StartupModule() override; virtual void ShutdownModule() override; }; IMPLEMENT_PRIMARY_GAME_MODULE(FMyProjectModule, MyProjectModule, "MyProject" ); void FMyProjectModule::StartupModule() { ISettingsModule* SettingsModule = FModuleManager::GetModulePtr<ISettingsModule>("Settings"); if (SettingsModule != nullptr) { SettingsModule->RegisterSettings( "Editor", // ※2 "MySettingCategory", "MySetting", LOCTEXT("MySettingName", "MySetting"), LOCTEXT("MySettingDescription", "My setting discription"), GetMutableDefault<UMyEditorSetting>() ); } } void FMyProjectModule::ShutdownModule() { ISettingsModule* SettingsModule = FModuleManager::GetModulePtr<ISettingsModule>("Settings"); if (SettingsModule != nullptr) { SettingsModule->UnregisterSettings( "Editor", // ※3 "MySettingCategory", "MySetting" ); } } #undef LOCTEXT_NAMESPACE |
これで、エディタを起動して「エディタの環境設定」を開くと、↓のように項目が追加されています。
また、この場合、設定した内容は DefaultEditor.ini に保存されます。
保存先を変えたい場合は、ソースコードの※1の箇所を編集します。
config=Editor なので、保存先が DefaultEditor.ini になっています。
config=Engine であれば、保存先は DefaultEngine.ini になります。
同じように「プロジェクト設定」に項目を追加したい場合は、※2,※3の箇所を、”Editor”から”Project”に変更すればOKです。
ここで設定した値は、下記のようにC++コード中から参照できます。
1 2 3 |
const UMyEditorSetting* MyEditorSettings = GetDefault <UMyEditorSetting>(); bool check = MyEditorSettings -> Check0; int value = MyEditorSettings -> Value0; |
エディタ拡張やプラグイン機能のオプション化など、様々な使い道があると思います。
是非お試し下さい。