当前位置: 首页 > news >正文

UE5中的DataTable说明

创建DataTable

        在编辑器中创建

        在文件夹空白处右击,选择Miscellaneous/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);
}

结构体选取

        UE中的结构体选取是定义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);

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 剪辑视频调色软件有哪些 剪辑视频软件哪个最好 剪辑视频怎么学 剪辑视频的方法和步骤 会声会影2024 会声会影视频制作教程
  • 【研究生复试】计算机软件工程人工智能研究生复试——资料整理(速记版)——JAVA
  • Sora了解资料
  • OpenHarmony下GN语法普法
  • easyx 枪声模拟器
  • h5网页和 Android APP联调,webview嵌入网页,网页中window.open打开新页面,网页只在webview中打开,没有重开一个app窗口
  • html的列表标签
  • 入门【网络安全/黑客】启蒙教程
  • Hypervisor是什么
  • 利用ChatGPT提升工作效率
  • 说一下 JVM 有哪些垃圾回收算法?
  • 关于深度学习和大模型的基础认知
  • MySQL-基本使用,数据类型,简单操作
  • 机器人内部传感器阅读笔记及心得-位置传感器-光电编码器
  • 2024.2.19 模拟实现 RabbitMQ —— 虚拟主机设计
  • 【347天】每日项目总结系列085(2018.01.18)
  • 【前端学习】-粗谈选择器
  • 〔开发系列〕一次关于小程序开发的深度总结
  • 0基础学习移动端适配
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • create-react-app项目添加less配置
  •  D - 粉碎叛乱F - 其他起义
  • Hibernate最全面试题
  • Java新版本的开发已正式进入轨道,版本号18.3
  • JSDuck 与 AngularJS 融合技巧
  • Map集合、散列表、红黑树介绍
  • Python实现BT种子转化为磁力链接【实战】
  • React Native移动开发实战-3-实现页面间的数据传递
  • ReactNativeweexDeviceOne对比
  • React系列之 Redux 架构模式
  • Redis在Web项目中的应用与实践
  • Sequelize 中文文档 v4 - Getting started - 入门
  • spring boot 整合mybatis 无法输出sql的问题
  • TypeScript实现数据结构(一)栈,队列,链表
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 读懂package.json -- 依赖管理
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 番外篇1:在Windows环境下安装JDK
  • 译有关态射的一切
  • 掌握面试——弹出框的实现(一道题中包含布局/js设计模式)
  • PostgreSQL之连接数修改
  • 第二十章:异步和文件I/O.(二十三)
  • 通过调用文摘列表API获取文摘
  • #Linux(帮助手册)
  • #pragma pack(1)
  • #QT(智能家居界面-界面切换)
  • (02)vite环境变量配置
  • (2024,RWKV-5/6,RNN,矩阵值注意力状态,数据依赖线性插值,LoRA,多语言分词器)Eagle 和 Finch
  • (3) cmake编译多个cpp文件
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (附源码)php投票系统 毕业设计 121500
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (六)软件测试分工
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐