UE4读取CSV表格配置数据
开发游戏时,经常会采用表格文件来存储游戏相关配置数,比如玩家的最大健康值、魔法值等,以及NPC的属性配置等。在Unreal下,无须自己编写表格文件的读取及解析代码,可以直接使用Unreal自带的读取表格数据功能。下面通过一个简单示例来说明如何通过Unreal来读取CVS格式的表格数据。表格数据示例如下:http://img.blog.csdn.net/20160809112032097?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center注意,表格第一个单元格必须为空,第一行为每一列的名称,该行数据也是存取每一列数据的唯一标识。表格第一列代表行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"));
int32HP = dataRow->MAX_HP;
UE_LOG(LogTemp, Warning, TEXT(" Max HP is %d "),HP); }
}
至此,读取表格数据的代码工作已经全部完成,接下来需要在编辑器中完成必要的工作。首先,将创建好的CSV文件拖至编辑器进行导入,导入时,会弹出提示框,选择DataTable,以及刚才定义的表格数据数据结构。接下来选择刚创建的ATableRowSetting类资源,在属性中可以看到DataTable属性,将导入的CSV文件资源拖至该属性,保存工程并运行即可看到结果。
楼主实乃我辈楷模。 多谢分享!!!!!! 这是我想要的,但一定要通过C++完成吗?不能蓝图直接读取吗 ? 谢谢分享,非常有用呢~~~~ 支持一下 个人觉得c++ 更易于和别的数据交互。比如想把csv中的部分数据存出去看看什么的,Bp无解! 感谢分享 66666,楼主乃当代之强国青年。
页:
[1]
2