創(chuàng)建DataTable
????????在編輯器中創(chuàng)建
????????在文件夾空白處右擊,選擇Miscellaneous/DataTable,如圖:
????????使用代碼創(chuàng)建
// 創(chuàng)建DataTable實例
UDataTable* MyDataTable = NewObject();
// 創(chuàng)建一個行結(jié)構(gòu)體
UStruct* RowStruct = UStruct::CreateEmpty();
// 添加兩個屬性到結(jié)構(gòu)體
FStructProperty* Property1 = FStructProperty::Create(RowStruct, TEXT("Property1"), EPropertyFlags::CPF_Edit);
FStructProperty* Property2 = FStructProperty::Create(RowStruct, TEXT("Property2"), EPropertyFlags::CPF_Edit);
// 更新結(jié)構(gòu)體
RowStruct->StaticLink(true);
// 設(shè)置行結(jié)構(gòu)體
MyDataTable->RowStruct = RowStruct;
在DataTable中添加行數(shù)據(jù)
????????有了DataTable的結(jié)構(gòu)或者類型定義后,接下來您需要添加數(shù)據(jù)。以下是示例代碼:
// 獲取DataTable并檢查是否有效
UDataTable* MyDataTable = LoadObject(nullptr, TEXT("DataTable'/Game/Data/MyDataTable.MyDataTable'"));
if (MyDataTable)
{
// 創(chuàng)建行數(shù)據(jù)實例
FMyRowData MyRow;
// 設(shè)置行數(shù)據(jù)
MyRow.Property1 = FString(TEXT("Value"));
MyRow.Property2 = 10;
// 添加行數(shù)據(jù)
MyDataTable->AddRow(TEXT("RowName"), MyRow);
}
結(jié)構(gòu)體選取
????????UE中的結(jié)構(gòu)體選取是定義DataTable中行數(shù)據(jù)的非常常用的方法。結(jié)構(gòu)體選取可以用來設(shè)計更復(fù)雜的數(shù)據(jù)結(jié)構(gòu),比如嵌套結(jié)構(gòu)體。以下是結(jié)構(gòu)體選取的示例:
// 定義一個結(jié)構(gòu)體屬性
FStructProperty* StructProperty = CastField(MyDataTable->RowStruct->FindPropertyByName(TEXT("Property1")));
// 獲取結(jié)構(gòu)體屬性值
FMyRowData MyRowData = MyDataTable->GetRow(TEXT("RowName"));
FString PropertyValue = StructProperty->GetPropertyValue_InContainer(&MyRowData)->ToString();
從CSV文件中導入數(shù)據(jù)
????????導入CSV文件到DataTable可以幫您提高生產(chǎn)效率,特別是當數(shù)據(jù)非常大時。以下是從CSV文件中導入DataTable數(shù)據(jù)的示例:文章來源:http://www.zghlxwxcb.cn/news/detail-825610.html
// 打開CSV文件
FString FilePath = FString(TEXT("Data/MyData.csv"));
FString FileContent;
FFileHelper::LoadFileToString(FileContent, *FilePath);
// 將CSV文件解析為FDataTableImporterCSV類型
FDataTableImporterCSV DataTableImporterCSV(*FileContent);
// 導入數(shù)據(jù)到DataTable
MyDataTable->CreateTableFromCSVString(FileContent);
從DataTable導出數(shù)據(jù)
????????從DataTable中導出數(shù)據(jù)可以讓您將數(shù)據(jù)放到一個易于處理的格式中,比如一個文本或者XML文件。以下是從DataTable導出數(shù)據(jù)的示例:文章來源地址http://www.zghlxwxcb.cn/news/detail-825610.html
// 從DataTable中獲取行數(shù)據(jù)
FMyRowData* RowData = MyDataTable->FindRow(TEXT("RowName"), FString(""), true);
// 使用JSON格式序列化行數(shù)據(jù)并保存到文件
FString JsonString;
FJsonObjectConverter::UStructToJsonObjectString(RowData, JsonString);
FString FilePath = FString(TEXT("Data/MyData.json"));
FFileHelper::SaveStringToFile(JsonString, *FilePath);
到了這里,關(guān)于UE5中的DataTable說明的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!