UE4数据驱动开发总结
Posted zhangxiaofan666
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UE4数据驱动开发总结相关的知识,希望对你有一定的参考价值。
1.BP CDO/Instance
可以在c++中定义一个结构体
然后遍历结构体数组去获取数据
2.c++ ConstructHelpers
3.DataTable
然后遍历每个RowName获取每一行数据
对于数据表也可以导出到csv,json 格式数据
将数据表转出json后,直接在文本里面编辑,更加快捷方便
使用数据表的优缺点
这里值得说下的是:如果数据表load进来,那么其表中的所有蓝图,mesh等等资源也都要加载进来,那么是否会产生一瞬间的卡顿呢,这个要权衡
4.CompositeDataTable
作用是将多个数据表放到一起,在一个数据表中去读
5 DataAsset
视频中看到这个函数,其实函数就是获取该类的CDO
使用数据资产的优缺点
可用BulkEdit快速编辑多个DataAsset是指这样批量编辑
如何读取DataAsset?
先继承自DataAsset
调用异步去加载资源
或者像上面一样c++暴露一个Get静态方法,通过loadObject来load一个绝对路径的DataAsset,然后在蓝图中用Get静态方法直接调用里面的变量,使用AssetData优点是不会像DataTable一样如果表中有很多Mesh会一下子全部加载进来,缺点也很明显,如果有大量配置对象,需要创建大量的DataAsset
6 CurveTable
相比于DataTable,属于轻量级的数据表,只能配置一些float数据,好处是能通过csv导入
比如将csv文件直接拖动到ue4中
可以转成CurveTable
使用该节点去读取CurveTable
7.Custom WorldSettings
在项目设置里面有这样一个选项,可以配置默认的各种蓝图类的默认基类
比如,我们将WorldSettingsClass的默认类改成一个自己写好的类,那么就可以添加自定义的属性放到WorldSettings
8.Settings(ini)
ue4帮我们做好了一个类,我们继承UDeveloperSettings即可
在ue4编辑器中会识别到
在游戏目录下也同样会生成一个ini文件
如何读取ini文件的数据呢?
ini文件在引擎启动时被读取成一个UObject对象,直接获取CDO即可
9.Raw: txt/csv/json/xml
使用这种方式的优缺点:
读取txt输出成字符串的c++方法:
读取csv变成DataTable的方法:
读取Json的方式
小提示:
在ue4的编辑器控件中
有GetEditorWorld和GetGameWorld两个节点,看是在编辑器中还是在游戏中传入不同的WorldContext
以上是关于UE4数据驱动开发总结的主要内容,如果未能解决你的问题,请参考以下文章
[中文直播] 第21期 | UE4数据驱动开发 | Epic 大钊课程笔记
[中文直播] 第21期 | UE4数据驱动开发 | Epic 大钊课程笔记