在UE中创建配置文件
內容概括
本篇將在一個空白插件中創建一個配置(并非必須要在插件中創建,直接在項目中創建也可以),該配置可在編輯器中打開。
 之后,使用兩種方法來在代碼中讀取配置的內容。
配置文件的官方文檔為:Configuration Files | Unreal Engine Documentation
步驟0. 創建空白插件
以Blank為模板創建插件。
 
步驟1. 創建配置的UObject
定義一個配置對應的UObject,需要注意的是需要在UCLASS宏中有Config,其值就是配置文件ini的名字:
#pragma once#include "CoreMinimal.h"#include "MyTestConfig.generated.h"//配置對應的UObject: UCLASS(Config = yaksue) class UMyTestConfig : public UObject {GENERATED_UCLASS_BODY() public://測試配置項:UPROPERTY(Config, EditAnywhere)bool test1;UPROPERTY(Config, EditAnywhere)FString test2;UPROPERTY(Config, EditAnywhere)FColor test3; };對應cpp文件不需額外處理,只要實現構造函數就行了:
#include"MyTestConfig.h"UMyTestConfig::UMyTestConfig(const FObjectInitializer& ObjectInitializer): Super(ObjectInitializer) { }步驟2. 注冊配置
隨后,需要在模塊的啟動函數中注冊這個配置。不過首先要先include負責這個行為的模塊,以及剛才定義UObject的文件:
#include "ISettingsModule.h" #include "MyTestConfig.h"注冊的代碼:
//獲得 ISettingsModule 模塊并注冊配置 if (ISettingsModule* SettingsModule = FModuleManager::GetModulePtr< ISettingsModule >("Settings")) {SettingsModule->RegisterSettings("Project", //ContainerName"Plugins", //CategoryName"YakSue", //SectionNameLOCTEXT("YaksueConfig", "YaksueConfig"), //DisplayNameLOCTEXT("YaksueConfigDescription", "YaksueConfigDescription"), //DescriptionGetMutableDefault< UMyTestConfig >()); //SettingsObject }其中RegisterSettings有很多參數,其意義是:
- ContainerName:指定是在編輯器中的 “Project” 還是 “Editor”。
- CategoryName:編輯器中的分類。
- SectionName
- DisplayName:編輯器中顯示的名字。
- Description:鼠標懸停在編輯器中的名字上浮現的提示。
- SettingsObject:配置所對應的UObject
隨后,在編輯器中就可以在 Project Settings 的 Plugins 分欄下看到名為 YaksueConfig 的配置:
 
 修改一些屬性后,將可以看到對應內容被存到了項目文件夾\Saved\Config\Windows\yaksue.ini中:
讀取配置的方式:GetDefault
使用GetDefault<配置對應的UObject類型>()可以獲得配置的UObject。
 比如:
讀取配置的方式:配置文件層級
上面方式的一個缺點是,使用時需要知道那個UObject的定義。
 而通過“配置文件層級”則不需要(關于“配置文件層級”的概念可看官方文檔)
 比如,當前層級就是:
為了方便,我在嘗試這種方式時,將存儲的ini文件改成一個引擎知道的ini文件,比如Engine:
UCLASS(Config = Engine)現在,當修改屬性時,可以在 \Saved\Config\Windows\Engine.ini 看到與之前相同的內容了。
 而讀取時的代碼為:
函數的最后一個參數就是配置文件,比如GEngineIni的值就是絕對路徑\Saved\Config\Windows\Engine.ini
總結
以上是生活随笔為你收集整理的在UE中创建配置文件的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 安徽外国语学院计算机毕业大补考,学生缓考
- 下一篇: Linux Polkit权限提升漏洞(C
