C++ UnrealEngine4-将数据表指针限制为仅使用特定的行结构

C++ UnrealEngine4-将数据表指针限制为仅使用特定的行结构,c++,unreal-engine4,C++,Unreal Engine4,我有两个结构: USTRUCT(BlueprintType) struct FLevelMapStruct : public FTableRowBase { GENERATED_USTRUCT_BODY() public: UPROPERTY(EditAnywhere, BlueprintReadWrite) int32 LocationX; UPROPERTY(EditAnywhere, BlueprintReadWrite) int32 Loca

我有两个结构:

USTRUCT(BlueprintType)
struct FLevelMapStruct : public FTableRowBase
{
    GENERATED_USTRUCT_BODY()

public:

    UPROPERTY(EditAnywhere, BlueprintReadWrite)
    int32 LocationX;

    UPROPERTY(EditAnywhere, BlueprintReadWrite)
    int32 LocationY;

    UPROPERTY(EditAnywhere, BlueprintReadWrite)
    TSubclassOf<ATile> TileType;
};

USTRUCT(BlueprintType)
struct FLevelStruct : public FTableRowBase
{
    GENERATED_USTRUCT_BODY()

public:

    UPROPERTY(EditAnywhere, BlueprintReadWrite)
    UDataTable* MapTable;
};
USTRUCT(蓝图类型)
struct FLevelMapStruct:公共FTableRowBase
{
生成的目录体()
公众:
Upperty(EditAnywhere,BlueprintReadWrite)
int32 LocationX;
Upperty(EditAnywhere,BlueprintReadWrite)
int32定位;
Upperty(EditAnywhere,BlueprintReadWrite)
TsubClassofTiletype;
};
USTRUCT(蓝图类型)
struct FLevelStruct:公共FTableRowBase
{
生成的目录体()
公众:
Upperty(EditAnywhere,BlueprintReadWrite)
UDataTable*映射表;
};
我想允许使用行结构
FLevelStruct
创建的blueprint数据表只能在字段
MapTable
中使用
FLevelMapStruct
行结构创建的数据表

有人能给我指出正确的方向,告诉我怎么做


编辑:
MapTable
需要能够指向blueprint数据表

我自己刚刚解决了这个问题,我相信我已经找到了答案(至少在UE 4.26中对我有效)。我看到一些帖子没有回答,所以我想我应该分享我的解决方案

UPROPERTY
宏中添加
meta=(RequiredAssetDataTags=“RowStructure=*YourRowTypehere*”

所以在你的例子中,你会

UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(RequiredAssetDataTags = "RowStructure=LevelMapStruct"))
UDataTable* MapTable;
请注意,行结构的名称中不包括
F
,因此
LevelMapStruct
而不是
FLevelMapStruct


在editor now中,您的属性应该只列出使用该类型的表。

我自己刚刚提到了这个问题,我相信我已经找到了答案(至少在UE 4.26中适用)。我看到一些帖子没有回答,所以我想我应该分享我的解决方案

UPROPERTY
宏中添加
meta=(RequiredAssetDataTags=“RowStructure=*YourRowTypehere*”

所以在你的例子中,你会

UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(RequiredAssetDataTags = "RowStructure=LevelMapStruct"))
UDataTable* MapTable;
请注意,行结构的名称中不包括
F
,因此
LevelMapStruct
而不是
FLevelMapStruct


在现在的编辑器中,您的属性应该只列出使用该类型的表。

只是想大声说出来,但是您可以为此目的将
UDataTable
子类化吗?@Rotem我需要它是可蓝图的,并且我不认为
UDataTable
的子类是可蓝图的,也不是常规数据表。“可蓝图”到底是什么意思?@Rotem我设法让它可蓝图,但这不是我真正想要的。我在想如果我可以把我的子类的代码“<代码> UDataTable < /C++ >做一个蓝图子类,我可以稍微接受它的代码< Frace> FravaMultStudio,在BrasePraseCube的行结构域中,你建议用C++结构的C++子类,它是用你的Stutt硬编码的。但是你能为此目的将
UDataTable
子类化吗?@Rotem我需要它是可蓝图的,我不认为
UDataTable
的子类是可蓝图的,也不是常规数据表。“可蓝图”到底是什么意思?@Rotem我设法让它可蓝图,但这不是我真正想要的。我在想如果我能把我的子类的代码“<代码> UDataTable < /Cord>”的蓝图子类,我可以让它只接受<代码> FravaMultStudio< /Cube >在BrasePrimeSeCube的行结构域中,建议你用C++结构来构造一个C++代码子类,该代码是<代码> UDataTable < /C> >,它是用你的Stutt硬编码的。