CocosCreatorScrollView性能优化
本⽂基于CocosCreator2.1.2版本
原⽂链接:
CocosCreator的ScrollView组件是游戏开发中的常⽤组件,我们经常在⼀些商城界⾯、排⾏榜界⾯、任务列表、背包系统等模块中会使⽤到它,同时它也是开销⾮常⼤的地⽅。当我们的需要显⽰的条⽬⽐较多时,单纯简单的去使⽤的话,性能很不好。CocosCreator只是实现了最基本的ScrollView,但相应的优化还需要我们根据项⽬的情况来进⾏针对性的优化。
当数据量⽐较⼤时,我们很容易碰到两个问题:
DrawCall的数量⽐较⾼,渲染性能⽐较低
整个scrollview的节点数太多,导致隐藏或显⽰界⾯时的onEnable和Disable开销⽐较⼤
⽐如下⾯的这个界⾯(demo中的ScrollView1场景)
ScrollView当中有20个Cell,总共的DrawCall达到了790,单个Cell⼤概有50个节点,总共就有差不多1000个节点,这时我们的开销会变得⾮常的⼤。
接下来我们进⾏⼀些常规的优化:
⾸先我们要做的就是合并渲染批次,降低DrawCall,提升渲染性能,使⽤⾃动图集或使⽤TexturePacker对碎图进⾏打包处理,这样的话可以让多个Sprite渲染的纹理都是同⼀张图集图⽚,这样的话就可以合并这些sprite的渲染批次,减少DrawCall 以及CPU的运算开销。
这⾥我使⽤了AutoAtlas来实现,关于AutoAtlas的使⽤可以参考⽂档:Auto-atlas Asset
让我们来看下效果:
同样是20个cell,DrawCall降低到了556,相⽐较之前有了⽐较明显的降低。
不过这还不够,如果你是在Google的Chrome浏览器上进⾏调试的话,推荐你可以使⽤spector.js这个插件,通过这个插件你可以看到每个DrawCall对于纹理的处理情况。
对于原⽣开发的话,我们可以使⽤XCode中的GPU analysis功能
开启dynamicAtlas功能,开启这个功能你可以在main.js中的window.boot()⽅法内加⼊下⾯的两⾏代码即可:
cocos creator面试题开启之后我们可以看到DrawCall⼤幅下降,部分DrawCall已经合并
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论