Unity3d特效DrawCall优化介绍

关于Unity3d 5.1.1f1 DrawCall优化。

在做动作游戏中总会有很多重复的特效出现。比如:受击特效,治疗特效等公用特效。我们的程序跟我们说为了减少DC(DrawCall),要求说受击后播放了受击特效后,再次受击是不会再次播放一个受击特效的。要等第一个受击特效播放完后如果还受击了那再播放受击。

一开始我是拒绝的,但是因为我们项目DC的确蛮高了。后面我还是答应了。

最后测试后打击感差了2的1024次方。最后为了解决这个问题,我研究了Unity3d粒子系统。并做了测试。


这是我们的受击特效。DC是5个

如果创建N个的话 DC会怎么样呢?


可以看到Batches 1257....难怪卡死了....


这个特效是由5个例子特效组成的。我把每个粒子特效的OrderInLayer重新设置。2000,2001,2002,2003,2004

确保每个粒子的OrderInLayer不同.不要重复.


接下来就是见证奇迹的时候了......0 0、


可以看到重复创建的特效都跑到Saved by batching了。

大家理解了吗?特效又有新的事情要做了。


PS:关于单个特效也是能优化的。原理是一样的


这是一个散射子弹的特效。看这个特效的结构是相同的特效复制了5份换成了不同的角度。

我还是一样的把OrderInLayer重新设置了。不过每个sq_skill_3_ball,sq_skill_3_fire,sq_skill_3_light都是设置成一样的。

再一次见证奇迹的时刻- -、

没修改前DC的顶峰会随时间在12-16徘徊。

修改后DC的顶峰稳定在8.

你懂了吗?快叫特效去改吧

你可能感兴趣的:(Unity3d优化心得)