UIParticle@4.0.0研究

UIParticle\@4.0.0研究

背景

UIParticle刚开始引进项目中的版本是@3.3.10,发现的问题比较多,材质数不能超8个的问题也在github上提了bug#122

作者最近升级UIParticle到v4,解决了一些问题和增加了新特性,其中包括bug#122。

所以来研究一下,这个新版本的优化内容对项目有没有价值,考虑是否有必要升级版本。

bug修复

1.submesh can not over 8问题修复

即使是使用很多材质的特效,都没有输出警告了。

2.使用meshRenderer和uv动画实现的烟雾渲染层级不在UI layer问题

使用meshRenderer的粒子不会被UIParticle渲染,因为UIParticle使用了新类UIParticleRenderer进行渲染,同样不会处理非粒子系统下的网格和材质。

3.共享材质问题

动画修改材质属性,共享材质不会同步变化,估计是内部实现已经不使用sharedMaterial属性。

4.ParticleSystem的所有的粒子都能被UIParticle渲染出来吗?

还是拿家具抽奖的那个特效ui_jiajuchoujiang来测试,依然有部分没有渲染出来,而且跟渲染顺序无关。

5.勾选ignoreCanvasScale后不同分辨率下大小不对问题

放弃了ignoreCanvasScale属性,重构了ui缩放逻辑,所以这么问题应该是解决了。

新特性

1.UI自适应缩放

也就是上述第5点。

2.新增吸引子组件

可以吸引粒子沿着某种路径到某个位置,属于效果扩展上的新特性。

3.网格共享组

渲染大量相同粒子时可以使用相同的网格共享组,属于性能优化上的改进。

4.add overlay window

overlay window是unity2021.2开始提供的scene window的覆盖窗口特性,可以自定义菜单,unity2020没有这个特效。

另外Inspector面板做了优化,去掉了IgnoreCanvasScale属性,新增了mesh sharing接口,也支持输出一些警告。

详细看看更新日志

有个问题就是,升级后需要对UIparticle特效的scale重新调整,这点比较麻烦。