UE5C++学习(三)--- 读取数据表格(DataTable)

本文介绍了如何在UnrealEngine5中创建角色升级效果,通过自定义FUserLevelInfo结构体并利用数据表格功能进行配置,支持CSV文件导入导出,以及使用StaticLoadObject加载并操作数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

例:现在我创建了一个角色,我想要角色有一个升级的效果,并且想要将升级数据用表格去配置,该怎么处理?

UE5中有一个数据表格,可以以.csv文件导出,用表格软件打开修改添加,修改完成以后,再导入UE5中进行使用。

创建一个结构体,继承自FTableRowBase

例:

/*
 * 角色等级信息
 */
USTRUCT(BlueprintType)
struct FUserLevelInfo : public FTableRowBase
{
	GENERATED_BODY()

	UPROPERTY(EditAnywhere)
	int32 UserLevel;
	UPROPERTY(EditAnywhere)
	float Health;
	UPROPERTY(EditAnywhere)
	float Mana;
	UPROPERTY(EditAnywhere)
	float Attack;
	UPROPERTY(EditAnywhere)
	float Defense;
	UPROPERTY(EditAnywhere)
	float Exp;
	
};

 找到创建数据表格的地方

 在弹出来的面板中,选择自己创建的结构体行结构

 创建完成打开之后便可以在表中去添加或者修改自己需要的数据。

在Unreal Engine (UE) 5C++中,DataTable是一种强大的数据存储机制,它可以动态地管理复杂的数据结构。如果你想动态创建一个指定结构体的DataTable,你可以按照以下步骤操作: 1. 首先,你需要定义你的结构体(Structure)。例如,假设有一个名为`MyStruct`的结构体: ```cpp USTRUCT() struct MyClass { GENERATED_BODY() UPROPERTY(EditAnywhere) float ValueA; UPROPERTY(EditAnywhere) int32 ValueB; }; ``` 2. 然后,在你的类中,可以使用`TSharedPtr<FJsonSerializer>`与`FName`来动态创建DataTable: ```cpp void CreateDataTable() { TSharedPtr<FJsonSerializer> Serializer = MakeShareable(new FJsonSerializer()); // 创建DataTable的名字 FName DataTableName = FName("MyData"); // 使用Json序列化的方式动态创建DataTable TArray<TAttribute<FName, FString>> Attributes; Attributes.Add(TAttribute<FName, FString>("ValueA", TEXT("ValueA"))); Attributes.Add(TAttribute<FName, FString>("ValueB", TEXT("ValueB"))); if (!Serializer->TryDeserialize<DataTable>(DataTableName.ToString(), Attributes, *MyDataTable)) { UE_LOG(LogTemp, Warning, TEXT("Failed to create DataTable")); } } ``` 这里,`MyDataTable`是你打算存放这个DataTable的类成员变量。 3. 最后,别忘了注册你的DataTable到游戏全局的数据表系统中,通常在`PostConstruction()`或者`BeginPlay()`函数里: ```cpp void BeginPlay() { Super::BeginPlay(); // 注册你的DataTable RegisterAllComponents(); GetMutableDefault<UObject>()->RegisterDataTable(MyDataTable); } ``` 如果你遇到任何错误或需要进一步帮助,记得检查JSON字符串是否匹配你的结构体,并查看是否有权限在当前上下文下创建DataTable
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卡西莫多说

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值