为UE4添加自己的资源

发表于2015-10-07
评论1 2.9k浏览

前一段时间很忙很忙,做了一个基于UE4引擎的虚拟现实项目,包含了 洛伊滕的动作捕捉,和 Oculus DK2的VR眼镜,多人局域网互联功能,遇到很多困难也学到很多东西,刚结束 ... 现在领导想让我带一个UE4的项目,压力非常大.希望以后可以多抽出点时间写博客跟大家分享自己学的知识。

很多同学在使用UE4为自己的游戏编写了很多定制代码后发现越来越多的数据,越来越多的类型都需要数据源的支持,除了读数据表以外想把数据保存和读取引擎中。接下来推荐使用UnrealEngine4自己的Asset这种方式,也可以保存和读取数据。

自定义Asset的优点​:

可以使用UE4引擎自己的资源处理机制作为资源模板保存,载入,默认的属性编辑器进行编辑。甚至可以单独做一个编辑器进行编辑,编辑器后的数据可以作为资源模板的数据。

自定义Asset的缺点:

跟UE4引擎耦合过深,不容易单独把数据拿和数据结构提取出来,难以模块化供其他业务提供(例如:UnrealEngine4引擎中AI模块的数据,寻路模块的数据,地图模块的数据就就很难拿出来放到我们的服务器端复用)复用。​


如何为UE4添加我们自己的资源:

1. 首先资源可以在编辑器中显示,创建,编辑就要包含编辑器的一下机制。所有肯定是部分编辑器代码+资源数据的形式存在。

2. 因为包含编辑器部分代码​,所以有对工程目录结构要求比较高的小伙伴们需要新创建一个模块(比如 XXXEditor 模块,XXXAsset 模块等 创建模块的方法我就不说啦,在创建自己的插件的博文中有提到,如果有不清楚的小伙伴可以加我QQ或者私信,留言,评论都可以。

3. 然后我们必须有一个自己的数据源类 比如 UMyAsset要有UObject​继承关系,不能是F的呦,因为UObject​会有自己的序列化机制。

4. 接下来我们创建​ 一个AssetTypeActions_Base的派生类AssetTypeActions_MyAsset这个类数据编辑器所需要的代码类必须添加,这个类主要是设置资源在编辑器显示的标图啊,名称啊,颜色啦,属于哪个分类所支持的数据源类是哪个(哪些),可以用哪些编辑器进行编辑(用哪些编辑器打开)。例如下图:


5. ​只有了AssetTypeActions还不够,因为编辑器的资源是由一个大的工场模式负责创建,管理等,资源浏览器在初始化创建资源的菜单时会遍历所有UFactory的派生类。所以还需要有一个继承UFactory的UMyAssetFactory类,用来配置在什么情况下资源可以被创建,配置数据是什么样的等。这个类也是必须要写的,不然在编辑器资源浏览窗口右键无法出现我们自定义的资源呦。例如下图:

6. OK,有了上面这2个类和我们的数据源类,最后我们需要在"AssetTools"模块注册我们的FAssetTypeActions_MyAsset 。这样就可以在编辑器中右键创建我们的资源啦。​使用模块的同学们不要忘记加载模块呦。例如下图:

哈,这样我们下一步该考虑如何构建我们的编辑器楼。​

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引

0个评论