前言
UE4可以方便的实现表格的读取,通常是将csv表格文件按对应表头结构体导入后,作为引擎内的DataTable类型文件再进行使用。读取DataTable的操作,可以通过GetDataTableRowNames和GetDataTableRow节点在蓝图中简单实现:
然而UE4蓝图似乎并不能实现DataTable的写入,通常我们可以使用UEC++中的UDataTable或UDataTableFunctionLibrary相关的操作函数对DataTable进行动态的数据写入。
事实上还是可以通过蓝图实现DataTable的写入操作,本着能用蓝图干嘛还用C++的心态(bushi,保证性能的情况还得靠C++,C++的运行效率通常高于蓝图,特别点名批评蓝图Loop),记录这种实现方式。
实现
创建名称中含有EditorUtility类型的蓝图,
这些蓝图中能够调用一般Actor蓝图中无法调用的 Fill Data Table from XXX 系列节点,
(这些节点在UE4.21前也可以在一般Actor蓝图中调用,随着UE4向模块化设计模式更新迭代,而被拆分放于Editor模块的蓝图中)
以上4个节点都可以实现DataTable数据的写入,以 Fill Data Table from CSV String 为例,
- 创建String变量用于存储预写入数据
- 通过Append节点按照CSV格式(逗号分隔数据,文本换行表格即换行)存入数据
- 数据写入完毕后,在String开头加上表头字符
- 最后调用 Fill Data Table from CSV String 节点将String内容存入DataTable中,完成。
eg.图2
- 若想导出DataTable至外界,在Editor中右键DataTable,选择顶部DataTableActions中的Export as CSV/JSON即可。
结语
写这篇Blog时被CoCo和大鹏催干活了5次!可恶,明明还是假期,干活去了ε=ε=(>Д<)ノノ!!