datatable如何生成级联数据_UE4 C++结合DataTable批量快速创建DataAsset
剖析某些大型游戏的框架,可以发现广泛运用了DataTable与DataAsset来管理数据,DataTable的导入直接用Excel就能很轻易的完成,但是DataAsset却要一直手动去填,当DataAsset有几百个时,哪怕通过引擎自带的Bulk Edit去调也是一个噩梦。
那么假如可以将DataTable结合DataAsset结合起来去填充DataAsset的数据,那么不香么?
结合了钊哥的数据驱动教程
数据驱动开发www.bilibili.com
提供的将DataTable在编辑器中编辑的思路,我简易地实现了这个非常方便的功能。想直接看效果的可以看我的这个视频
UE4 C++结合DataTable批量快速创建DataAssetwww.bilibili.com
现在简要地说明一下实现流程
在阅读本文之前,假设你已经对DataTable和DataAsset已经有了初步的了解。
为了简单起见,本文不结合AssetManager在DataAsset中应用FPrimaryAssetType这个概念,读者有需要可以自行补充。
1.在c++中创建以FTableRowBase为父类的结构体
2.以该结构体为基准,在excel中填好数据,并将csv文件导入虚幻4,生成DataTable。(这一步的具体实现请参考官方文档有关教程
https://docs.unrealengine.com/zh-CN/Gameplay/DataDriven/index.html)
导入完成后在ue4中如下图所示
打开为
3.在c++中以UPrimaryDataAsset为父类创建自定义的DataAsset,其中ItemProperty是刚才创建的DataTable结构体。
/** Base class for all items*/
4.在c++中以UBlueprintFunctionLibrary为父类创建蓝图函数库
并创建CreateNewDataAsset函数
UCLASS
在cpp文件中的具体实现为(没错,就是标准的创建Asset的流程,注意必要时需要对DataTable结构体中的拷贝赋值运算符进行重载,防止浅拷贝)
void
5.在ue4中创建编辑器工具蓝图
父类选择Editor Utility Object
首先读取DataTable中的内容
再将数据表中的数据读入DataAsset中,并注意路径末尾不能以/结尾,否则创建的DataAsset无法保存。(忽略下面Create New Data Asset 中的ItemType,如果不需要用AssetManager,就不需要在c++中设置这个形参)
Package Path可以进一步优化,否则只按上面的方式设置,在文件夹视图中,只会有一个UAsset。按下面的方式设置,UAsset就正常了(推荐按下面的方式)
设置好之后,编译,保存。
6.运行编辑器工具控件
就会快速生成一堆DataAsset
可以看到,DataTable中的数据,已经完全导入到DataAsset中了,这样再也不必手动设置DataAsset中的数据了,也非常方便管理DataAsset中的数据。
具体效果可以看我这个视频
UE4 C++结合DataTable批量快速创建DataAssetwww.bilibili.com
完
datatable如何生成级联数据_UE4 C++结合DataTable批量快速创建DataAsset相关推荐
- datatable如何生成级联数据_如何把Excel表数据批量生成条形码
条形码属于一维条码,是将宽度不等的多个黑条和空白,按照一定的编码规则排列,用以表达一组信息的图形标识符,条形码的种类比较多,比如常用的Code128码,Code39码,Code93码,EAN-13码, ...
- datatable如何生成级联数据_通过源码分析Mybatis是如何返回数据库生成的自增主键值?...
在Mybatis中,执行insert操作时,如果我们希望返回数据库生成的自增主键值,那么就需要使用到KeyGenerator对象. 需要注意的是,KeyGenerator的作用,是返回数据库生成的自增 ...
- datatable java排序,JSF数据表(h:dataTable)DataModel排序数据
JSF中有一个叫作DataTable的控件,可用来渲染和格式化html表格.使用DataTable,我们可以迭代收集或数组数组来显示数据.下面我们来学习如何向DataTable使用DataModel排 ...
- 给DataTable中添加一行数据
给DataTable中添加一行数据 一.如果该DataTable有两列,列的名称是Name,Age,且该DataTable的名称是dt; DataTable dt = new DataTable(); ...
- 清除datatable上的所有数据
var curTable = dataSet.Tables[0];RemoveEmpty(curTable);//调用方法//清除datatable上的所有数据protected void Remov ...
- plsql视图添加表字段_教你不到两分钟,快速创建数据透视图
如果说数据透视表给我们提供了灵活.快捷的数据计算工具, 那么数据透视图就是更直观.动态地展现大批量数据的变化规律和趋势. 数据透视图作为数据透视表中的重点内容,高阶的内容包括数据透视图的编辑.美化成高 ...
- badatatable转成json_C# DataTable 转换成JSON数据 三种方法
在web开发中,我们可能会有这样的需求,为了便于前台的JS的处理,我们需要将查询出的数据源格式比如:List.DataTable转换为Json格式.特别在使用Extjs框架的时候,Ajax异步请求的数 ...
- C#中DataTable添加外部行数据
大家都知道要使用DataTable的第一个Add方法,得先DataTable对象NewRow()出一行自己的数据,才能够添加行数据. 现在我发现了一个好方法使得DataTable能够生成表结构,并能添 ...
- 创建生成级联上级字符的函数
需求:现有表dw,里面字段bm(编码),sj(上级编码), 新增字段px,要求在新字段中添加字符串,字符串为单位的级联上级及自身, 并从顶向下,从左到右排序,中间以"|"分割. 如 ...
最新文章
- 【原创】大叔经验分享(65)spark读取不到hive表
- mysql主备模型,MySQL数据同步【双主热备】
- 爬虫:通过滑动或者点触验证码的方法及实现(点触+滑动)
- oracle第一次使用语句创建作业失败记
- mysql5.7.25源码安装_源码编译安装 mysql5.7.25
- [转]Global exception handling in Web API 2.1 and NLog
- C++程序设计语言(特别版) -- 一个桌面计算器
- python求两数之和的命令_python计算两个数的百分比方法
- 使用ASP.NET Core和Entity Framework Core实现Angular 7 SPA CRUD
- 计算机大学等级评估,“计算机专业”学科评估,四所高校获A+评级
- 查看数值类型python_Python数据科学实践 | 数据类型
- Starship Troopers
- 全球化业务渐入佳境,BIGO盈利持续大幅提升,是时候重估欢聚集团
- 国内10个千年古镇 绝美春色洗涤你的眼
- 禁止在input中输入中文
- Windows server 2012R2 设置文件共享目录报错:无法连接到C$管理共享已验证文件夹xxx在计算机xxx上是否存在
- 宝德开开游戏云战略发布会在京瞩目召开
- win10开启键盘灯的步骤
- GQZL: 计算机网络(三)
- ecstore接口开发
热门文章
- 函数的初识;函数的返回值;函数的传参
- 使用FileZilla Server轻松搭建个人FTP服务器
- 给gridview动态生成radiobutton添加OnCheckedChanged监听函数
- Ubuntu8.04 LTS Hardy下的常用命令
- 全球项目多区域数据同步问题解决方案
- 返回content-length=0问题解决
- 【HTML】处理<br>换行符追加到前端换行无效的问题 --- html中渲染的字符串中包含HTML标签无效的处理方法,字符串中包含HTML标签被转义的问题 解决
- Win7 IIS7 HTTP 错误 404.2 - Not Found解决方法 ISAPI CGI
- ASP.NET + SqlSever 大数据解决方案 PK HADOOP
- flask from app import db ImportError: cannot import name ‘db’ 的解决方案