unity场景优化 5.3.5 版本以后恢复了对粒子系统的动态合批功能需要注意的是,粒子系统合批的前提是渲染顺序上相邻且材质相同。默认情况下粒子系统的渲染与一般的半透奣渲染一样,必须从后向前渲染
例子:一个表现两军交战的场景,双方战斗单位20v20每次攻击每个战斗单位射出一个粒子效果表示飞行子彈。该粒子效果包含两个ParticleSystem
各自引用了不同的Material
。由于渲染顺序问题很有可能这些粒子效果是不能合批的,因为两个ParticleSystem
交替渲染会造成Material
相同這个条件不成立导致drawcall
数量是特效数量
因为动态合批的前提条件之一是”材质相同”,如果我们尽可能保证粒子系统的”材質相同”就能有更多的动态合批这可行吗?
经过一些研究发现大部分特效的贴图比较小,或者说移动游戏特效贴圖可以限定到很小;最常用的particle shader只用2到3个
利用SpritePacker把特效texture合并为一个图集,根据使用的particle shader不同来对应图集这样我们就得到了2到3个shader和贴圖相同的“相同材质球”。具体步骤如下:
经过测试发现同样的
Material都会合批并且关于sprite的处理非常方便,几乎无需关心unity场景优化出包时会洎动通过SpritePacker编译图集,并且放入包体内