本文主要是介绍UE4 C++读数据表格,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
UE4 C++读数据表格
结构体:
要继承 FTableRowBase
才可以被数据表格获取
USTRUCT(BlueprintType)
struct FST_EnemyState : public FTableRowBase
{GENERATED_BODY()UPROPERTY(EditAnywhere, BlueprintReadWrite, DisplayName="序号") int Index;UPROPERTY(EditAnywhere, BlueprintReadWrite, DisplayName="名称") FString Name=TEXT("敌人");
};
就选择刚创建的结构体
数据表格添加写数据
C++里写个函数在BeginPlay()执行就行了
UDataTable* const UserInfoDataTable = LoadObject<UDataTable>(this, TEXT("DataTable'/Game/1game/enemy/Kuluo/Table_Enemy.Table_Enemy'"));if (UserInfoDataTable){//输出所有的名称for (FName RowName : UserInfoDataTable->GetRowNames()){UKismetSystemLibrary::PrintString(GetWorld(), RowName.ToString());FST_EnemyState* TestInfo = UserInfoDataTable->FindRow<FST_EnemyState>(RowName,TEXT("Index"));if (TestInfo){UKismetSystemLibrary::PrintString(GetWorld(), TestInfo->Name);}}//输出所有的名称for (auto it : UserInfoDataTable->GetRowMap()){FString RowName = (it.Key).ToString();FST_EnemyState* UserInfo = (FST_EnemyState*)it.Value;UKismetSystemLibrary::PrintString(GetWorld(), FString::Printf(TEXT("%s %s"), *RowName, *UserInfo->Name));}//读一条数据FST_EnemyState* TestInfo = UserInfoDataTable->FindRow<FST_EnemyState>(TEXT("2"),nullptr);if (TestInfo){UKismetSystemLibrary::PrintString(GetWorld(), TestInfo->Name);}}else{UKismetSystemLibrary::PrintString(GetWorld(), TEXT(" Not Find DataTable!"));}
这篇关于UE4 C++读数据表格的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!