UE5中的DataTable说明

news2025/1/30 16:01:10

创建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);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1454101.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

UE蓝图 Set节点和源码

文章目录 Set节点说明相关源码 Set节点说明 UE蓝图中的Set节点是用于对变量进行赋值操作的重要组件。它具有多种功能和作用,具体如下: 变量赋值:Set节点可以用于设置不同类型的变量值,包括整数、浮点数、布尔值、字符串等。在游戏…

c++开发基础之保障多线程编程中的原子操作InterlockedIncrement和InterlockedDecrement用法详解

一、介绍 在多线程编程中,确保对共享变量进行原子操作是至关重要的。当多个线程同时访问和修改同一共享资源时,如果没有合适的同步机制,可能会导致数据竞争、内存一致性问题,甚至造成程序崩溃。为了解决这个问题,C提供…

【退役之重学前端】JavaScript 类、构造器、原型的关系

ES6中类的概念,我之前花了较长的时间学习Java,所以对类感觉很亲切。我并不满足仅仅会使用,让我们一起深究一下 JavaScript 中的类吧。 构造一个类,并实例化一个对象 class Animal{constructor(name){this.name name;}getName(){…

中国传媒网CEO徐晓艺:媒体融合发展业态新媒体年后在沪召开

近日,在“坚守媒体初心,拥抱AI时代”2023外滩新媒体年会上,有多项合作达成。 在当前竞争激烈的市场环境中,媒体宣传已经成为企业品牌推广不可或缺的一环。对于很多企业来说往往会犯一个错误,就是默默地参加了展会,并没有进行媒体营销。展会是一种非常有力的宣传和推广方式,可以…

Vue中 如何监听键盘事件中的按键

在Web前端开发中,键盘事件的处理是非常常见的需求之一。而在Vue框架中,如何监听键盘事件中的按键是一个相对简单但又很实用的功能。本文将为你介绍如何在Vue中监听键盘事件,并演示一些常用的按键操作。 首先,在Vue中监听键盘事件…

数学建模【线性规划】

一、线性规划简介 线性规划通俗讲就是“有限的资源中获取最大的收益”(优化类问题)。而且所有的变量关系式都是线性的,不存在x、指数函数、对数函数、反比例函数、三角函数等。此模型要优化的就是在一组线性约束条件下,求线性目标…

2024年全国教资笔试报名流程(建议电脑报名),看看有啥新要求?

一.报名、考试时间节点 1.笔试报名时间: 2024年1月12日-15日 2.笔试考试时间:2024年3月9日 3.笔试成绩查询时间:2024年4月15日 4.面试报名时间:2024年4月15日 5.面试考试时间:2024年5月18日 6.面试成绩查询时间:2024年6月14日 二.笔试报名流程: 登陆→考生注册 →填报个…

ArcGIS学习(八)基于GIS平台的控规编制办法

ArcGIS学习(八)基于GIS平台的控规编制办法 上一任务我们学习了”如何进行图片数据的矢量化?" 这一关我们来学习一个比较简单的案例一一”如何在ArcGIS中录入控规指标,绘制控规图纸?" 首先,先来看看这个案例的分析思路以及导入CAD格式的控规图纸。 接着,来看…

LeetCode周赛384 题解

AK 第 384 场周赛 - 力扣(LeetCode) 前两题都是签到, 略。 第三题: 回文字符串的最大数量 1、题意: 给定一个字符串数组,总字符数量不超过1e6, 可以交换其中的任意两个字符,问能构造最多几个回文字符串。 2、题解: 首先我…

中科大计网学习记录笔记(十二):TCP 套接字编程

前前言:大家看到这一章节的时候一定不要跳过,虽然标题是编程,但实际上是对 socket 的运行机制做了详细的讨论,对理解 TCP 有很大的帮助;但是由于本节涉及到了大量的编程知识,对于一些朋友来说不是很好理解&…

阿里云香港服务器cn2速度测试和租用价格表

阿里云香港服务器中国香港数据中心网络线路类型BGP多线精品,中国电信CN2高速网络高质量、大规格BGP带宽,运营商精品公网直连中国内地,时延更低,优化海外回中国内地流量的公网线路,可以提高国际业务访问质量。阿里云服务…

『运维备忘录』之 CMD 命令详解

运维人员不仅要熟悉操作系统、服务器、网络等只是,甚至对于开发相关的也要有所了解。很多运维工作者可能一时半会记不住那么多命令、代码、方法、原理或者用法等等。这里我将结合自身工作,持续给大家更新运维工作所需要接触到的知识点,希望大…

Linux-系统资源管理的命令

目录 查看CPU:more /proc/meminfo 查看内存数据:free -m / free -h 查看系统版本:more /etc/issue 查看操作系统的类型:uname -a 查看主机名称:hostname 查看磁盘空间:df -h 查看某个目录空间…

互联网加竞赛 基于设深度学习的人脸性别年龄识别系统

文章目录 0 前言1 课题描述2 实现效果3 算法实现原理3.1 数据集3.2 深度学习识别算法3.3 特征提取主干网络3.4 总体实现流程 4 具体实现4.1 预训练数据格式4.2 部分实现代码 5 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 基于深度学习机器视觉的…

【IEEE-Trans】这本TOP刊一点不拖泥带水,审稿很利索!质量也很不错!

【SciencePub学术】 期刊信息简介 IEEE TRANSACTIONS ON INSTRUMENTATION AND MEASUREMENT IF(2022):5.6,JCR1区,中科院2区TOP 期刊数据指标 ISSN:0018-9456 IF(2022):5.6 自引率:23.20% 年发文量&a…

好的程序员不该局限技术故步自封,更多去了解产品,运营,销售,推广,公司运作吧

在当今技术迅速发展的时代,作为程序员,我们常常面临着学习速度跟不上技术变化的困扰。每年涌现的新技术、新框架,给我们带来了巨大的挑战。尤其是随着年龄增长,学习能力的下降似乎让我们更加被动。技术的发展也并非一帆风顺&#…

【大厂AI课学习笔记】【2.1 人工智能项目开发规划与目标】(6)特征工程初步

特征工程是一个非常重要的概念,从特征工程可以领会到机器学习的真谛。 特征工程就是从原始数据转换为特征向量的过程。 特征工程的特点: 特征工程是机器学习中很重要的起始步骤,直接影响效果,需要大量的时间。 数据和特征决定了…

NLP深入学习:《A Survey of Large Language Models》详细学习(六)

文章目录 1. 前言2. LLMs 能力与评价方法2.1 基础能力2.1.1 语言生成2.1.2 知识利用率2.1.3 复杂推理 2.2 高阶能力2.3 基准和评估方法2.3.1 评价基准2.3.2 评估方法2.3.3 评估方法优点和不足 3. 参考 1. 前言 最近正在读 LLM 论文的综述,当前采取的策略是部分内容…

【JVM】打破双亲委派机制

📝个人主页:五敷有你 🔥系列专栏:JVM ⛺️稳中求进,晒太阳 打破双亲委派机制 打破双亲委派机制三种方法 自定义类加载器 ClassLoader包含了四个核心方法 //由类加载器子类实现,获取二进制数据调用…

安装cockpit

1、下载cockpit yum -y install cockpit 下载相关环境 yum install qemu-kvm libvirt libvirt-daemon virt-install virt-manager libvirt-dbus 2、启动libvirtd systemctl start libvirtd.service systemctl enable libvirtd.service 3、设置开机自启动 systemctl enabl…