【UE5 C++课程系列笔记】16——DeveloperSettings(开发者设置)的基本利用
概念DeveloperSettings 是一种用于存储项目级别的开发相干设置和设置信息的机制。它答应开发者在虚幻引擎项目中界说一些全局的、可调整的参数,这些参数通常与项目的开发过程、调试大概特定功能的设置相干,并且可以方便地在编辑器环境下举行可视化编辑,无需直接修改代码就能改变这些设置,极大地进步了开发的灵活性和便利性,尤其适用于在开发阶段快速调整各种参数以举行测试、调试以及优化工作。
比方,开发者可以通过 DeveloperSettings 来设置游戏中的调试显示选项(如显示碰撞体、显示导航网格等)、性能分析相干的采样频率、特定功能模块的开关(比如是否开启某个实验性的游戏玩法功能等)等各种内容,不同的项目可以根据自身需求定制不同的 DeveloperSettings 类来管理对应的设置信息。
基本利用(创建设置文件)
1. 新建一个空白C++类,这里定名为“SampleSettings”
https://i-blog.csdnimg.cn/direct/5800a5b503374d2b90274941b7592232.png
2. 打开“xxx.Build.cs”文件
https://i-blog.csdnimg.cn/direct/ce4bf18ea7cf41f3946a4c4775bbfb63.png
添加“DeveloperSettings”模块
https://i-blog.csdnimg.cn/direct/4a6402f2bbd34ef8a5e27c7c5641d590.png
3. 在“SampleSettings.h”中引入“DeveloperSettings.h”
https://i-blog.csdnimg.cn/direct/4dc55f245a634e218874d241f6f58e74.png
继承在“SampleSettings.h”中添加如下代码:
https://i-blog.csdnimg.cn/direct/47fe8928405f4bf48f2f4fb4fb9694ce.png
让SampleSettings 继承UDeveloperSettings。UCLASS宏包括的两个参数的意思分别为:
Config = SampleSettings 参数寄义:这个参数指定了该类所对应的设置分类名称为 SampleSettings。在UE中,不同的设置分类可以用于区分不同用途、不同模块的设置信息,比方常见的有 Engine(用于引擎相干设置)、Game(针对游戏层面的设置)等,这里界说的 SampleSettings 就创建了一个自界说的设置分类,后续该类中界说的全部设置变量相干的设置信息都会存储在这个分类下的设置文件中(不同平台对应的设置文件位置和格式会有所不同)。
defaultconfig 参数寄义:表示这个类将会被用于存储默认设置信息,即当项目首次创建大概在没有其他特定设置覆盖的环境下,该类所界说的设置变量会接纳默认的值(不过现在类里还没界说具体变量,后续添加变量后就可以为其设置默认值了)。同时,这个设置也使得该类可以或许在项目设置的团体体系中扮演提供默认设置的角色,方便在不同的开发环境大概项目摆设场景下举行统一的默认设置管理。
添加构造函数:
https://i-blog.csdnimg.cn/direct/82bd8d35292b4426b060b28246da409c.png
实现 USampleSettings 类的构造函数如下。这里它接收一个 FObjectInitializer 类型的参数 ObjectInitializer,该参数在UE中常用于传递对象初始化相干的各种设置信息,比如可以通过它来控制对象创建时是否自动创建某些默认的组件、是否应用特定的属性初始化值等。在构造函数中,通过 :Super(ObjectInitializer) 的语法调用了UDeveloperSettings父类的构造函数,并将 ObjectInitializer 参数传递过去,这是 C++ 中派生类构造函数初始化列表的写法。
https://i-blog.csdnimg.cn/direct/ecb72a37db9445c09a796b2bdb1a139a.png
重写“UDeveloperSettings”父类的“GetContainerName”、“GetCategoryName”和“GetSectionName”方法。此中,函数“GetContainerName”用于返回 USampleSettings 类在设置体系中所属的容器名称;“GetCategoryName”用于指定 USampleSettings 类在设置分类方面的名称;“GetSectionName”用于指定 USampleSettings 类在具体设置章节方面的名称。
https://i-blog.csdnimg.cn/direct/8bd1c2ec7af440638577b6ecad6036c1.png
这里设置容器名称为“Project”,分类名称为“Test”,章节名称为“SampleSetting”
https://i-blog.csdnimg.cn/direct/9ac718fd4a804defb37d5c57f3a216bd.png
4. 编译后在项目设置中可以看到如下界面
https://i-blog.csdnimg.cn/direct/0e5656aebd3c4fb68de9f778d4930cc2.png
5. 声明一个名为 GetXunFeiCoreSettings 的静态函数,该函数的返回值类型是指向 USampleSettings 类对象的指针
https://i-blog.csdnimg.cn/direct/5240bbca320047ef9eefb9ec59bf3757.png
https://i-blog.csdnimg.cn/direct/7106f0e289f541a994b823507b9c1e02.png
6. 界说一个名为“FSampleDescriber”结构体,用于形貌项目信息
https://i-blog.csdnimg.cn/direct/41d387c5aa8f485db99e6ebf2b903eb7.png
界说如下三个变量,分别用于表示项目版本号、项目形貌和项目名称
https://i-blog.csdnimg.cn/direct/dec0187b42ec47358065e02cda07b5f7.png
7. 编译后,可以看到项目设置“Test-》SampleSettings”中有如下选项。
https://i-blog.csdnimg.cn/direct/074016d884dd424695317bacc3b92a90.png
修改“ProjectSimpleName”的值
https://i-blog.csdnimg.cn/direct/6c55e47973874966b8ca7506b2b2ad40.png
此时可以看到在项目路径下的“Config”文件夹中生成了一个名为“DefaultSampleSettings.ini”的文件
https://i-blog.csdnimg.cn/direct/74fdf1548c594cdab613780eb2d0ce26.png
打开后内容如下:
https://i-blog.csdnimg.cn/direct/53ab65a3ba8f4d4cb06c568975c11179.png
“SampleSetting”完整代码:
“SampleSetting.h”
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "Engine/DeveloperSettings.h"
#include "SampleSettings.generated.h"
USTRUCT(BlueprintType)
struct FSampleDescriber
{
GENERATED_USTRUCT_BODY()
public:
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "ProjectInfo")
FString AuthorName = TEXT("None");
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "ProjectInfo")
bool bExperiment = false;
};
UCLASS(Config = SampleSettings, defaultconfig)
class STUDY_API USampleSettings : public UDeveloperSettings
{
GENERATED_BODY()
public:
USampleSettings(const FObjectInitializer& ObjectInitializer = FObjectInitializer::Get());
public:
virtual FName GetContainerName() const;
virtual FName GetCategoryName() const;
virtual FName GetSectionName() const;
public:
static USampleSettings* GetXunFeiCoreSettings();
public:
UPROPERTY(VisibleAnywhere, BlueprintReadOnly)
FString ProjectVersion = TEXT("1.0.0");
UPROPERTY(VisibleAnywhere, BlueprintReadOnly)
FSampleDescriber SampleDescribe;
UPROPERTY(Config, EditAnywhere, BlueprintReadWrite)
FString ProjectSimpleName = TEXT("Sample");
}; // Fill out your copyright notice in the Description page of Project Settings.
#include "Config/SampleSettings.h"
USampleSettings::USampleSettings(const FObjectInitializer& ObjectInitializer):Super(ObjectInitializer)
{
}
FName USampleSettings::GetContainerName() const
{
return TEXT("Project");
}
FName USampleSettings::GetCategoryName() const
{
return TEXT("Test");
}
FName USampleSettings::GetSectionName() const
{
return FName("SampleSetting");
}
USampleSettings* USampleSettings::GetXunFeiCoreSettings()
{
USampleSettings* Settings = GetMutableDefault<USampleSettings>();
return Settings;
}
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]