本文主要是介绍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特效DrawCall优化介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!