UE中DataTable创建问题解决方案


前言

#include "CoreMinimal.h"
#include "Net/Serialization/FastArraySerializer.h"
#include "InventoryTypes.generated.h"

USTRUCT(BlueprintType)
struct FInventoryItemData
{
	GENERATED_BODY()

	UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
	int32 RowIndex;

	UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
	FText ItemName;

	UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
	FPrimaryAssetType ItemType;

	UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
	int32 MaxStack = 1;

	UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
	UTexture2D* Icon;
}; 

想在UE的编辑器中以FInventoryItemData为表头创建DataTable时找不到FInventoryItemData是怎么回事?

在 Unreal Engine 中创建 DataTable 时无法找到 FInventoryItemData 结构体的原因及解决方案如下:


一、主要原因分析

未继承 FTableRowBase
DataTable 的行结构体必须继承自 FTableRowBase,否则引擎无法识别其为有效的行类型。

二、解决方案

继承 FTableRowBase 并添加行标识

USTRUCT(BlueprintType)
struct FInventoryItemData : public FTableRowBase // 继承 FTableRowBase
{
    GENERATED_BODY()

    // DataTable 行标识(默认使用 "RowName" 作为键)
    UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Inventory")
    FName RowName;

    // 其他原有成员变量
    UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
    int32 RowIndex;

    UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
    FText ItemName;

    // ...
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值