[]问下加载大量的sprite,但是同一个资源,会有性能开销不?
现在我战场上1000个小兵
如果每个小兵要新加一个阴影片,同屏的spite数会加1000...好恐怖的数字。。。
但是drawcall应该只加1
这种情况下性能会有影响不?
如果每个小兵要新加一个阴影片,同屏的spite数会加1000...好恐怖的数字。。。
但是drawcall应该只加1
这种情况下性能会有影响不?
没有找到相关结果
已邀请:
要回复问题请先登录
1 个回复
cuixueying
赞同来自:
针对Sprite的优化
1)尽量减少不必要的层次嵌套,减少Sprite数量
2)非可见区域的对象尽量从显示列表移除或者设置visible=false
3)对于容器内有大量静态内容或者不经常变化的内容(比如按钮),可以对整个容器设置cacheAs属性,能大量减少Sprite的数量,显著提高性能。如果有动态内容,最好和静态内容分开,这样就可以只缓存静态内容。
4)Panel内,会针对panel区域外的直接子对象(子对象的子对象判断不了)进行不渲染处理,超出panel区域的子对象是不产生消耗的。
针对DrawCall的优化
1)对复杂静态内容设置cacheAs,能大量减少DrawCall。
2)尽量保证同图集的图片渲染顺序是挨着的,如果不同图集交叉渲染,会增加DrawCall数量。
3)尽量保证同一个面板中的所有资源用一个图集,这样能减少提交批次。
针对Canvas的优化
在对Canvas优化时,我们需要注意,在以下场合不要使用cacheAs:
1)对象非常简单,比如一个字或者一个图片,设置cacheAs=bitmap不但不提高性能,反而会损失性能。
2)容器内有经常变化的内容,比如容器内有一个动画或者倒计时,如果再对这个容器设置cacheAs=bitmap,会损失性能。
可以通过查看Canvas统计信息的第一个值,判断是否一直在刷新Canvas缓存;
具体优化请参考:LayaAir项目优化