虚幻4渲染编程(工具篇)【第三卷:自定义资源及批处理工具】

我的专栏目录:

小IVan:专题概述及目录​zhuanlan.zhihu.com图标

在各个引擎里其实都会有对资源进行批处理的需求,假设有一千张贴图的设置需要修改,不可能一张一张点开设置吧,效率太低了。我使用过的其它各大引擎都有资源批操作的方式,但是虚幻目前鲜有耳闻,4.20倒是推出了这一特性,但是能力感觉还是很有限。下面就来一起自定义一个我们自己的资源,然后再对它用我们自己写的批处理工具来操作它们吧。


首先建一个我们自己的类,UMyCustomAsset

v2-861cab467c794335f42183a4b8bc60d5_b.jpg

然后再建一个UMyAssetsFactory

h文件

v2-33b43905467763298749b9f1f6a3ebe8_b.jpg

cpp文件

v2-97625fed7ab4d1e264e5e1a989a544a4_b.jpg

这样我们就能在contentbrower里创建一个我们的MyCustomAsset的资源文件了。

v2-a6f7bb083d8714baa0babce4beb73d9c_b.jpg
v2-93e9d6d62d2a82f8517d644fb1f19174_b.jpg

双击我们自己创建的资源将可以看到

v2-a1645c7a8f0cb4bd7768144d4bd4104e_b.jpg

现在我们定义好了我们自己的资源,但是我们还想把资源放在我们自己的Category里。就像下图我自定义了一个Category

v2-64a8bb6cc20ebe5b8610759f86bef599_b.jpg

想要自定义一个Category,首先我们需要在Build.cs里增加如下模块:

v2-06c10dfa87aa156eaafcc76cf0e3b8fe_b.jpg

然后我们需要做一个AssetTypeAction的类来负责管理资源的各种Action

H

v2-eca604dbac38ef4d1817de3006ca109e_b.jpg

CPP

v2-ba6db37bddf6abf46f5189b719ac82c7_b.jpg

准备好这个Action后,原来Factory里的GetCategory函数就可以删了。然后我们在模块的StartModle里把我们的Action和Asset绑定起来

v2-afc91bcb23bc4d73e5bafbd80c2fb6b6_b.jpg
v2-fc3c41d5ef2c9de36a0e60c4fa5b5537_b.png

在StartupModule里首先用AssetTools.RegisterAdvancedAssetCategory方法注册了一个Category,然后在RegisterAssetTypeAction中把Action注册进去。在ShutDown里接触这些绑定。

至此我们可以在我们的Category里创建我们的资源了。

v2-bff08f3f1a97c3072a091041cb7fab85_b.jpg

做到这里其实还是有一些不完美,Asset的Logo是默认的,现在我们想换一下资源的小图标。

我们首先需要一个FSlateStyleSet

v2-d823946cab96d3f8726a3a162c145dd9_b.jpg

然后在StartModule里找到我们的图片然后创建一个brush,然后再把这个brush绑定到资源类上,记得在cpp里包含#include "IPluginManager.h" 和 #include "SlateStyleRegistry.h"

v2-c31017ff54b7031e395cd3c3b991d89a_b.jpg

第一部分是寻找图片资源,第二部分是创建一个brush,第三部分是绑定类。第三部分的绑定有点奇葩,比如我的资源类名叫UXXX那么绑定的时候不需要虚幻的U类开头或者A类开头字母。实例里我的类的名字叫UMaterialEffectDataDriver

v2-98bba231f1abb632a65773a10a08cddb_b.jpg

绑定的时候我的代码只需要写成:ClassThumbnail.MaterialEffectDataDriver即可。必须要加ClassThumbnail.XXX

v2-0001236d2f46c1150dde110dfe36a431_b.png

最后可以得到:

v2-da4a099eda1a9e62bf3b0ad55246297b_b.jpg

于是我们就给我们的资源换上一个Icon了。

最后记得再ShutdownModule()里解绑

v2-533d87253484593c16d43162d0a7e60c_b.png

接下来再我们一节的工具的基础上做一下改动,把Buttom点击的回调函数改一下

v2-606f865d94c1f0b8d3208e30fbddb0a5_b.jpg

我们先在contentbrower中选中我们自己创建的资源然后点击按钮,我们这里就可以拿到我们选中的那个资源。通过GetAsset就可以拿到那个选中资源对应的DCO

v2-450af0ec02d4aedd5d428a6acfd666be_b.jpg

然后就可以操作资源文件中的数据啦。

v2-bfb3fa16e085b4721ceaf3616374e23c_b.jpg

然而现在我们改的仅仅是内存中的数据,我们需要把这个数据保存到磁盘的Uasset文件中

v2-93e02be39d16e0f21ab23ed80fd786ed_b.jpg

这样我们重启编辑器后,数据就依然是我们修改的值了。


Enjoy it

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cpongo11

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值