一、UE4DataTable概述
UE4中的DataTable是一個非常有用的工具,它允許您定義和管理各種數據,這些數據可以被其他系統使用。DataTable可以存儲任何類型的數據,包括字符串,整數,浮點數等等。您可以使用UE4編輯器或代碼來創建DataTable,也可以從CSV文件導入。DataTable可以用作藍圖和代碼中的數據源,比如說用來存儲技能數據或者NPC的信息。
二、創建DataTable
在UE4中,您可以使用UE4的編輯器或者代碼創建DataTable。以下是使用UE4編輯器的方法:
1. 打開您的項目,並選擇「內容瀏覽器」窗口中的任何文件夾。
2. 選擇「針對這個文件夾向新目錄」旁邊的下拉菜單,並選擇「DataTable」選項。
3. 選擇一個唯一的名稱並單擊「創建」按鈕。
4. 右鍵點擊您的新創建的DataTable並選擇「編輯」。這將打開一個新的窗口,您可以在窗口中定義DataTable的結構以及添加行數據。
以下是使用代碼創建DataTable的示例:
// 創建DataTable實例 UDataTable* MyDataTable = NewObject(); // 創建一個行結構體 UStruct* RowStruct = UStruct::CreateEmpty(); // 添加兩個屬性到結構體 FStructProperty* Property1 = FStructProperty::Create(RowStruct, TEXT("Property1"), EPropertyFlags::CPF_Edit); FStructProperty* Property2 = FStructProperty::Create(RowStruct, TEXT("Property2"), EPropertyFlags::CPF_Edit); // 更新結構體 RowStruct->StaticLink(true); // 設置行結構體 MyDataTable->RowStruct = RowStruct;
三、在DataTable中添加行數據
有了DataTable的結構或者類型定義後,接下來您需要添加數據。以下是示例代碼:
// 獲取DataTable並檢查是否有效 UDataTable* MyDataTable = LoadObject(nullptr, TEXT("DataTable'/Game/Data/MyDataTable.MyDataTable'")); if (MyDataTable) { // 創建行數據實例 FMyRowData MyRow; // 設置行數據 MyRow.Property1 = FString(TEXT("Value")); MyRow.Property2 = 10; // 添加行數據 MyDataTable->AddRow(TEXT("RowName"), MyRow); }
四、結構體選取
UE4中的結構體選取是定義DataTable中行數據的非常常用的方法。結構體選取可以用來設計更複雜的數據結構,比如嵌套結構體。以下是結構體選取的示例:
// 定義一個結構體屬性 FStructProperty* StructProperty = CastField(MyDataTable->RowStruct->FindPropertyByName(TEXT("Property1"))); // 獲取結構體屬性值 FMyRowData MyRowData = MyDataTable->GetRow(TEXT("RowName")); FString PropertyValue = StructProperty->GetPropertyValue_InContainer(&MyRowData)->ToString();
五、從CSV文件中導入數據
導入CSV文件到DataTable可以幫您提高生產效率,特別是當數據非常大時。以下是從CSV文件中導入DataTable數據的示例:
// 打開CSV文件 FString FilePath = FString(TEXT("Data/MyData.csv")); FString FileContent; FFileHelper::LoadFileToString(FileContent, *FilePath); // 將CSV文件解析為FDataTableImporterCSV類型 FDataTableImporterCSV DataTableImporterCSV(*FileContent); // 導入數據到DataTable MyDataTable->CreateTableFromCSVString(FileContent);
六、從DataTable導出數據
從DataTable中導出數據可以讓您將數據放到一個易於處理的格式中,比如一個文本或者XML文件。以下是從DataTable導出數據的示例:
// 從DataTable中獲取行數據 FMyRowData* RowData = MyDataTable->FindRow(TEXT("RowName"), FString(""), true); // 使用JSON格式序列化行數據並保存到文件 FString JsonString; FJsonObjectConverter::UStructToJsonObjectString(RowData, JsonString); FString FilePath = FString(TEXT("Data/MyData.json")); FFileHelper::SaveStringToFile(JsonString, *FilePath);
七、總結
UE4中的DataTable是一個非常有用的工具,它可以幫您管理和存儲各種數據,包括結構體,整數,浮點數等等。它還提供了從CSV文件導入和導出數據,使您更加高效地進行遊戲開發。使用DataTable可以幫助您更好地管理遊戲數據,從而提高遊戲製作的生產效率。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/158546.html