我的专栏目录:
小IVan:专题概述及目录在各个引擎里其实都会有对资源进行批处理的需求,假设有一千张贴图的设置需要修改,不可能一张一张点开设置吧,效率太低了。我使用过的其它各大引擎都有资源批操作的方式,但是虚幻目前鲜有耳闻,4.20倒是推出了这一特性,但是能力感觉还是很有限。下面就来一起自定义一个我们自己的资源,然后再对它用我们自己写的批处理工具来操作它们吧。
首先建一个我们自己的类,UMyCustomAsset
然后再建一个UMyAssetsFactory
h文件
cpp文件
这样我们就能在contentbrower里创建一个我们的MyCustomAsset的资源文件了。
双击我们自己创建的资源将可以看到
现在我们定义好了我们自己的资源,但是我们还想把资源放在我们自己的Category里。就像下图我自定义了一个Category
想要自定义一个Category,首先我们需要在Build.cs里增加如下模块:
然后我们需要做一个AssetTypeAction的类来负责管理资源的各种Action
H
CPP
准备好这个Action后,原来Factory里的GetCategory函数就可以删了。然后我们在模块的StartModle里把我们的Action和Asset绑定起来
在StartupModule里首先用AssetTools.RegisterAdvancedAssetCategory方法注册了一个Category,然后在RegisterAssetTypeAction中把Action注册进去。在ShutDown里接触这些绑定。
至此我们可以在我们的Category里创建我们的资源了。
做到这里其实还是有一些不完美,Asset的Logo是默认的,现在我们想换一下资源的小图标。
我们首先需要一个FSlateStyleSet
然后在StartModule里找到我们的图片然后创建一个brush,然后再把这个brush绑定到资源类上,记得在cpp里包含#include "IPluginManager.h" 和 #include "SlateStyleRegistry.h"
第一部分是寻找图片资源,第二部分是创建一个brush,第三部分是绑定类。第三部分的绑定有点奇葩,比如我的资源类名叫UXXX那么绑定的时候不需要虚幻的U类开头或者A类开头字母。实例里我的类的名字叫UMaterialEffectDataDriver
绑定的时候我的代码只需要写成:ClassThumbnail.MaterialEffectDataDriver即可。必须要加http://ClassThumbnail.XXX
最后可以得到:
于是我们就给我们的资源换上一个Icon了。
最后记得再ShutdownModule()里解绑
接下来再我们一节的工具的基础上做一下改动,把Buttom点击的回调函数改一下
我们先在contentbrower中选中我们自己创建的资源然后点击按钮,我们这里就可以拿到我们选中的那个资源。通过GetAsset就可以拿到那个选中资源对应的DCO
然后就可以操作资源文件中的数据啦。
然而现在我们改的仅仅是内存中的数据,我们需要把这个数据保存到磁盘的Uasset文件中
这样我们重启编辑器后,数据就依然是我们修改的值了。
Enjoy it