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

猜你喜欢

转载自blog.csdn.net/zhangxiaofan666/article/details/105925988