前言
#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;
// ...
};