轻松将自定义“项目设置”添加到虚幻引擎
轻松将自定义“项目设置”添加到虚幻引擎
您可能会将所有设置和可调整选项放在蓝图中,甚至可以在C++中硬编码。虚幻引擎确实可以选择使用开发者设置类在INI配置文件系统中轻松添加更多配置设置。您可能已经熟悉这些配置 INI 文件的存在。DefaultGame.ini、DefaultEngine.ini等都是使用这个类构建的,虚幻编辑器的项目设置和编辑器设置也使用这个系统。
虚幻引擎5.0中的新功能是DeveloperSettingsBackedByCVars,它增加了与控制台变量(CVars)和项目/编辑器设置的简单绑定。我将在这篇文章的底部解释这个新功能。
这个系统需要一些(基本的)C++来定义变量,所以即使没有编程经验,它也相对容易使用。
设置开发人员设置和配置文件
// Example of configuration file content. These files are located in MyProject/Config/*.ini
[/Script/ActionRoguelike.SSaveGameSettings]
SaveSlotName=SaveSlot03
DummyTablePath=/Game/ActionRoguelike/Monsters/DT_Monsters.DT_Monsters
通过从 UDeveloperSettings 派生新的 C++ 类,您可以轻松添加自己的类。[CategoryName] 将是你的项目 + 类名:[/Script/ActionRoguelike.SaveGameSettings],在我的开源 Action Roguelike GitHub 项目的情况下。
开发人员设置是一个模块。创建 UDeveloperSettings 派生类会自动将此模块添加到 .uproject 中。如果没有,或者您希望所有模块都在 .构建.cs文件,然后您应该手动添加开发人员设置。
配置文件使用键值对键=值,并支持文件路径甚至数组。我们将填充 FString 和资产路径,以通过 INI 文件分配数据表。
在C++中定义开发人员设置
您将在下面找到示例项目中的示例,请确保也将其公开给编辑器(EditAnywhere),以便它自动显示在项目设置中(请参见下面的屏幕截图)。
UCLASS(Config=Game, defaultconfig, meta = (DisplayName="Save Game Settings")) // Give it a better looking name in UI
class ACTIONROGUELIKE_API USSaveGameSettings : public UDeveloperSettings
{
GENERATED_BODY()
public:
/* Default slot name if UI doesn't specify any */
UPROPERTY(Config, EditAnywhere, BlueprintReadOnly, Category = "General")
FString SaveSlotName;
/* Soft path will be converted to content reference before use */
UPROPERTY(Config, EditAnywhere, BlueprintReadOnly, Category = "General", AdvancedDisplay)
TSoftObjectPtr<UDataTable> DummyTablePath;
USSaveGameSettings();
};
配置 – 将变量公开给顶部 UCLASS 中指定的 INI 文件(游戏 = 默认游戏.ini)
随处编辑 – 将其公开到“项目设置”窗口。
BlueprintReadOnly – 通过“GetClassDefaults”节点公开要在蓝图图中访问的变量。
默认配置 – “仅将对象配置保存到默认 INI,从不保存到本地 INI。(本地 INI 位于您的“我的项目/已保存/配置/…文件夹)
Config=Game – 存储在 DefaultGame.ini 中,其他示例包括引擎、输入。
要访问C++中的开发人员设置,我们使用 CDO(类默认对象),因为它已经自动为我们实例化并使用 GetDefault<T>() 访问;
void USSaveGameSubsystem::Initialize(FSubsystemCollectionBase& Collection)
{
Super::Initialize(Collection);
const USSaveGameSettings* SGSettings = GetDefault<USSaveGameSettings>(); // Access via CDO
// Access defaults from DefaultGame.ini
SlotName = SGSettings->SaveSlotName;
// Make sure it's loaded into memory .Get() only resolves if already loaded previously elsewhere in code
UDataTable* DummyTable = SGSettings->DummyTablePath.LoadSynchronous();
}
我们不能存储指向内容文件的直接指针,但我们可以使用软资产路径,并在需要时在代码中解析它们。确保您实际手动加载资产,否则它可能位于内存中,也可能不会位于内存中(例如,当您已经在当前编辑器会话中打开资产一次时)。
与C++和蓝图不同,配置文件的巧妙之处在于,这些值以纯文本形式存储,而不是编译为二进制。即使您已经打包了游戏,也可以轻松更改它们。
开发人员设置蓝图访问
使用 GetClassDefaults 节点获取对配置设置的只读访问权限非常容易。确保将变量标记为只读,以便它们显示。
游戏用户设置
如果要存储玩家可配置的设置,可以使用不同的类:游戏用户设置。此类已经包含一系列设置,包括图形选项。在这里,您可能需要添加鼠标灵敏度,FOV等。
DeveloperSettingsBackedByCVars
虚幻引擎5.0中的新功能是DeveloperSettingsBackedByCVars,它增加了与控制台变量(CVars)和项目/编辑器设置的简单绑定。
“自动发现的设置对象的基类,其中部分或全部设置存储在控制台变量而不是配置变量中。”– 来自虚幻引擎源代码。
这个新类使我们能够轻松地将控制台变量绑定到项目设置,并轻松地更改和存储每个开发人员或项目范围的默认值。
这方面的一个例子可以在UE5.0发布的令人难以置信的Lyra入门游戏中找到。LyraWeaponsDebugSettings 有几个用于调试跟踪命中的属性。通过使用 DeveloperSettingsBackedByCVars 和 ConsoleVariable 元说明符,您可以将变量绑定在一起。
// Should we do debug drawing for bullet traces (if above zero, sets how long (in seconds)
UPROPERTY(config, EditAnywhere, Category=General, meta=(ConsoleVariable="lyra.Weapon.DrawBulletTraceDuration")
float DrawBulletTraceDuration;
控制台变量仍在其他位置定义。在示例中,您可以在LyraGameplayAbility_RangedWeapon.cpp中找到 CVar:
namespace LyraConsoleVariables
{
static float DrawBulletTracesDuration = 0.0f;
static FAutoConsoleVariableRef CVarDrawBulletTraceDuraton(
TEXT("lyra.Weapon.DrawBulletTraceDuration"),
DrawBulletTracesDuration,
TEXT("Should we do debug drawing for bullet traces (if above zero, sets how long (in seconds))"),
ECVF_Default);
}
然后使用命名空间和静态浮点数(而不是设置文件中的变量)访问 CVar。
if (LyraConsoleVariables::DrawBulletTracesDuration > 0.0f)
{
static float DebugThickness = 1.0f;
DrawDebugLine(GetWorld(), StartTrace, EndTrace, FColor::Red, false, LyraConsoleVariables::DrawBulletTracesDuration, 0, DebugThickness);
}
这个新增功能可以很好地在项目设置中轻松设置默认值,无论是每次使用还是每个项目。所示示例指定 UCLASS(config=EditorPerProjectUserSettings) 为每个开发人员存储此内容。
本站所有文章、资源等一切内容,皆为在本站的注册网友所发布、上传、提供,如您发现任何内容侵犯了您的合法权益, 请与我们联系 ,我们将第一时间进行清理。iiiue.com 旨在为广大虚幻引擎爱好者提供技术交流学习、知识技术变现平台。
永久域名 iii ue .com 本站投稿能赚取收益变现提现,请一定要牢记账号密码!
Ue资源站 iiiue.com » 轻松将自定义“项目设置”添加到虚幻引擎
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有内容皆为网友发布,资源版权均属于原作者所有,如需商用请联系原作者获取授权许可,若由于商用引起版权纠纷,一切责任均由使用者承担。如您发现某些内容侵犯了您的合法权益, 请与我们联系 ,我们将在第一时间核实并清理。
- 下载的资源解压密码是多少?
- 任何资源的解压密码均由发布者提供,一般情况下都在资源的发布页面或者资源文件夹,请仔细检查,如您发现发布页面没有提供解压密码,请您试着在评论处留言联系作者
点击查看解压软件和密码说明
Tips:除了密码说明内的解压密码外,通常情况下,电脑在安装好RAR或360解压缩软件,双击打开压缩包,包内注释的网址也可以试试是否为解压密码哦
- 资源能否免费获取
- 本站用户可参与站内的一系列活动获取积分,资源皆可免费获取,若想快速获取可加入本站永久VIP钻石会员,荣耀身份,全站资源免费获取, 点此查看详情