ParticleSystem的小优化

最近游戏场景希望加入一些ParticleSystem来丰富场景,这样肯定会带来一定的性能开销。一般来说ParticleSystem的优化就是尽量减少粒子数,尽量不使用粒子碰撞等。而今天要说的是,多个ParticleSystem之间的Draw Call问题。

例子:

首先场景中添加3个ParticleSystem如下

 

 

 

运行效果

 

 

 

这里展示了3个ParticleSystem叠加在一起的效果。这种需求会经常碰到。

起初采用的方案:给每个ParticleSystem添加了不同的材质,每个材质对应相应的图片。如图:

 

 

 

 

 

 

统计一下Draw Call

 

 

 

优化方案:

减少Draw Call, 第一个想到的就是合并到一张大图。

可以使用Texturepacker。打包结果如下:

 

 

 

因为我的Texturepacker的mac版是免费的所以打包出来有水印。。请忽略

然后把3个ParticleSystem使用同一材质,对应纹理改成打包后的图片

 

 

 

重点来了:

ParticleSystem中勾选Texture Sheet Animation->Mode->Sprites,选择对应的Sprite

 

 

 

OK! 运行看一下Draw Call

 

 

 

可以看到Call减少2.

 

posted @ 2020-05-13 18:12  钢与铁  阅读(443)  评论(0编辑  收藏  举报