UE4读取CSV表格配置数据

来源:互联网 发布:python async with 编辑:程序博客网 时间:2024/06/01 07:43

开发游戏时,经常会采用表格文件来存储游戏相关配置数,比如玩家的最大健康值、魔法值等,以及NPC的属性配置等。在Unreal下,无须自己编写表格文件的读取及解析代码,可以直接使用Unreal自带的读取表格数据功能。

下面通过一个简单示例来说明如何通过Unreal来读取CVS格式的表格数据。

表格数据示例如下:


注意,表格第一个单元格必须为空,第一行为每一列的名称,该行数据也是存取每一列数据的唯一标识。表格第一列代表行ID,获取某行数据时需要根据第一列的值标识某一行数据。

 

首先,创建一个Actor类,头文件中添加表格变量,程序通过该Actor对象来读取表格数据。代码如下:

UCLASS()

class CVSTABLE_API ATableRowSetting : public AActor

{

    GENERATED_BODY()

   

public:

    // Sets default values for this actor's properties

    ATableRowSetting();

 

    // Called when the game starts or when spawned

    virtual void BeginPlay() override;

   

    // Called every frame

    virtual void Tick( floatDeltaSeconds )override;

 

    UPROPERTY(BlueprintReadWrite,EditAnywhere,Category ="Data SettingActor")

        UDataTable* DataTable;

   

};

 

然后在该头文件中添加与该CSV文件对应的表格数据结构,该结构从FTableRowBase结构派生,代码如下:

USTRUCT(BlueprintType)

struct FTableSettingData :publicFTableRowBase

{

    GENERATED_USTRUCT_BODY()

 

        UPROPERTY(BlueprintReadOnly,Category ="TableSetting")

        int32 MAX_HP;

 

    UPROPERTY(BlueprintReadOnly,Category ="TableSetting")

        int32 MAX_MP;

 

    UPROPERTY(BlueprintReadOnly,Category ="TableSetting")

        int32 MAX_LEVEL;

 

    UPROPERTY(BlueprintReadOnly,Category ="TableSetting")

        int32 MAX_XP;

 

};

注意,该结构中的属性变量必须与CSV文件中第一行中的列名保持一致。

然后在BeginPlay函数中实现表格数据的读取,代码如下:

void ATableRowSetting::BeginPlay()

{

    Super::BeginPlay();

 

    if (DataTable !=nullptr)

    {

        FTableSettingData* dataRow = DataTable->FindRow<FTableSettingData>(TEXT("HUMAN"),TEXT("LookupRow"));

 

        int32  HP = dataRow->MAX_HP;

 

        UE_LOG(LogTemp, Warning, TEXT(" Max HP is %d "),HP);

    }

   

}

 

至此,读取表格数据的代码工作已经全部完成,接下来需要在编辑器中完成必要的工作。

首先,将创建好的CSV文件拖至编辑器进行导入,导入时,会弹出提示框,选择DataTable,以及刚才定义的表格数据数据结构。

接下来选择刚创建的ATableRowSetting类资源,在属性中可以看到DataTable属性,将导入的CSV文件资源拖至该属性,保存工程并运行即可看到结果。
0 0