视频封面

上传视频封面

UE4 UI粒子插件

这是一个能让Cascaded Particle Editor编辑的粒子放在UI上跑的插件。
核心特性
1.直接在UI上向前渲染,摆脱了Render Target。
2.作为一个控件,可以在UMG Editor里编辑和控制。这意味着可以在UI的动画编辑器里和其他控件配合做出一些特殊效果。
3.支持Sprite和Ribbon。就算你不太需要在UI上显示Sprite,你也可以冲着Ribbon这一功能购买这一插件,为了能给你的UI控件加上花里胡哨的小尾巴。就像题图里最右侧的粒子一样花里胡哨——虽然这个粒子看上去像一块血迹。

技术细节
1.该插件本质上是直接把场景里的粒子数据拿出来,以一个SWidget显示在UI上。所以用法基本上就是创建一个粒子系统——把一个User Interface的材质设在它的发射器上——然后把这个粒子系统扔到UI上完事。具体用法可以看视频。
2.支持4.18~4.24。呃~如果你想在低版本上用的话改uplugin里面的引擎版本号就行了。时间原因我没有编译更多版本,但我保证4.18是支持的。
3.因为Slate本身的instance功能受限过多,该功能并没有依赖instance。这意味着FeaturelevelES2下该插件也可以使用。这也意味着想要在Slate上渲染Mesh类型的粒子就不太现实了(理论仍可行)——所以该插件目前只支持Sprite和Ribbon。
4.关于Ribbon,我只实现了Camera-Facing相关的渲染,只因为我觉得这对UI来说足够了。但如果你觉得对其他朝向有强烈的需求,可以跟我提。
5.受限于Slate本身的功能,不支持GPUParticle、PostEffect。没有后处理意味着没有bloom。其实众所周知的一点是,游戏里很多粒子之所以能够达到闪瞎狗眼的效果是因为有bloom的存在。(其实不一定是粒子)但是Slate基本是没有后处理的,除了那个BackgroundBlur控件(虽然我觉得可以强行尝试一下BackgroundBlur做bloom毕竟大家本质都是blur)。所以你在UI上想通过后效来达到bloom粒子的效果基本没可能,你只能把这种效果硬怼到UI材质里。
6.性能问题估计很多人问。但其实这代码写了两年多了(当然最近才想起来要上线),一直没认真做过压力测试的我,来无责任胡说一番。如果我说的跟实际测试结果不符也请不要打我。这玩意的CPU开销大概是原有场景粒子的2~3倍。对十年前的中端PC来说,UE3当时的粒子系统撑死跑个全屏四五万个。按这个数给到移动平台限制一下,四五千,然后给UI再除以10,四五百。(其实根本不能这么算,我估计UE4的Cascaded粒子系统在移动平台跟PC平台差距绝不止10倍)总之,这段胡话请无视。结论是,它的CPU开销跟场景CPU粒子相比的话,绝不可能相差超过一个数量级。
7.Particle Color、Dynamic Parameters不可能支持。我把前者用Vertex Color代替(会被clamp到0.0f~1.0f),后者的前两个参数被我传给了Texcoord[1]。这方面视频里也有演示。
商城地址
https://www.unrealengine.com/marketplace/en-US/product/10b64fc937ac49edba22761bb0b9eaeb​www.unrealengine.com

我的优势:
UE商城有另一款UI粒子插件,售价99.9美刀。那个我没有仔细研究,看预览界面,它似乎是自己实现了一套粒子系统,还带有编辑器。
那我这个跟他那个相比,优势是:
  • 便宜!只要19.9!买不了吃亏买不了上当!
  • 使用原生粒子系统,无额外学习成本!
其他资料
这里有一篇英文文档,里面详细列举了注意事项。此处不详述。
http://www.snafloda.com/blog/uiparticlesystem-documentation/​www.snafloda.com

这是一个范例项目。里面有一些根据引擎StarterContent改出来放到UI上的资源,还有一个Ribbon示例。
抱歉我作为程序猿实在做不出什么特别漂亮的粒子出来。
https://github.com/adolfans/uiparticlesamples​github.com

后续开发
目前暂无后续开发计划。如果有啥bug的话请及时提,我会持续关注大家的反馈。以及上面说的Ribbon相关如果有需求可以做。但是受限于UI渲染机制的我就无能为力了。以及,如果你要实现一个Cascaded Particle System里没有的Module,那这也超过了这个粒子插件所能及的范围了。
请各位老板多兹磁!在下多年没涨过工资了也不容易orz。