欢迎您光临本站,秉承服务宗旨,履行"站长"责任,销售只是起点,服务永无止境!

轻松将自定义“项目设置”添加到虚幻引擎

作者 : qwe789 本文共3737个字,预计阅读时间需要10分钟 发布时间: 2023-01-31 共2.34K人阅读
广告
也想出现在这里? 联系我们

轻松将自定义“设置”添加到

您可能会将所有设置和可调整选项放在中,甚至可以在中硬编码。虚幻引擎确实可以选择使用开发者设置类在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) 为每个开发人员存储此内容。

本站声明:
本站所有文章、资源等一切内容,皆为在本站的注册网友所发布、上传、提供,如您发现任何内容侵犯了您的合法权益,请携版权等相关证明致信vamwxyz@gmail.com 与我们联系 ,我们将第一时间进行处理。本站周1-周5每日稳定更新优质资源20+,开通永久SVIP全站资源永久免费!
本站防失联地址,请务必收藏:VAMW.XYZ
VAM » 轻松将自定义“项目设置”添加到虚幻引擎
广告
也想出现在这里? 联系我们

常见问题FAQ

关于解压密码和游戏资源使用方式的简要说明
本站默认解压密码为发布页网址:vamw.xyz 注意是小写,如果有其他密码也都在资源页面详细说明了,请认真查看,任何资源请下载后解压、切勿在线解压!VAM场景和人物形象资源下载解压缩后,放到VAM游戏目录里的AddonPackages文件夹后重启游戏即可,如D:\VAM\vam1.22.0.3\AddonPackages;更多教程请点击打开
海外用户怎么支付怎么下载?How can overseas users make payments and download?
本站支持“支付宝”、“微信”、“paypal”方式支付,如需“paypal”支付,请点击链接 https://paypal.me/vamwxyz;本站所有资源存储于“百度云网盘”,海外用户亦可通过本站教程下载安装注册“百度云网盘”进行资源的下载使用,点击查看教程
Our website supports payments via "Alipay", "WeChat" and "PayPal". If you want to pay with "PayPal", please click here https://paypal.me/vamwxyz;. All the resources on our website are stored in "Baidu Cloud Disk". Overseas users can also download, install and register "Baidu Cloud Disk" according to the tutorials on our website to download and use the resources. Click here to view the tutorials
怎么推广赚钱,怎么免费加入VIP?
高佣金活动进行中:本站开启用户推广赚钱模式,所有用户可以通过文章页或个人中心的的推广链接进行推广赚钱,普通用户推广佣金为15%;永久VIP推广佣金为30%,所有通过你的推广链接注册的用户,在后续发生的所有消费或充值会员的行为,您都有佣金拿!满50可申请提现!普通用户可以在金额达到充值会员金额的时候申请加入会员!赶快行动吧! 点此查看详情

发表回复

广告
也想出现在这里? 联系我们
© 2018 Theme by - VAMW.XYZ 绅士VAM资源站 & All rights reserved 冀ICP备19025219号-2
开通终身VIP 永久VIP折扣活动火热进行中,享全站资源免费下载特权!