cocos 爬坑日记(6)优化系列之①


缘起

最近在做avg类的游戏,特点是资源特别多,各种表现会比在下以前开发的游戏更丰富...
(当然,也许并没有那么细腻,但是丰富是肯定的)
功能完成了,就要开始兢(jie)兢(si)业(di)业(li) 地 优化了...痛苦并快乐着,谨以此文记录,
希望后来者看到这篇粗浅的稿子能够少走点弯路;
然后感谢cocos,用也用了,吐槽也吐了,但还是希望cocos越做越好 .

**

资源的优化:

**
1.图片资源
目前在下图片资源的优化主要有两种方式,一是图集,二是压缩(无论png还是jpg,其实jpg只能让你的包更小,但是其实是会更耗性能的,因为cocos会把jpg转成png再用…这个过程嘛…你懂的)
图集用的TexturePackerGUI打包(它还能整字体图集,具体请各位自行百度咯)
然后图片的压缩, 个人觉得 tiny 挺好用的,拉上去,拿下来,简单方便.

2.音效资源
音效其实说起来挺简单的,尽量打包成MP3,假如不是特别影响,还可以整成单声道…嗯,这个就比较看具体的需求了,一般来说背景音乐会大一些,需要优先处理.
工具的话,个人感觉瞄影工厂挺好用的…

3.spine资源
其实说实话,spine是在下目前仍在头疼的一个部分(不是资源,资源其实图片压缩好了,问题并不是很大…而是加载以及释放的问题,这个可能会放在下一篇跟大家一起讨论…暂且掠过)

**

加载优化

**
tip : 在avg游戏里面,图片的替换是非常频繁的,而且就像电影一样,用户还很可能随时读档跑回前面的章节去玩,所以有时候直接释放资源是不科学的(直接释放了图片资源,玩家读档回来就炸了…血泪的教训…)

所以,理想的情况下,过程应该是这样的:

avg普通进行过程
一开始的时候,资源并不多,但是到了后来,当图片资源上百兆的时候,假如一次性加载资源到内存里,那就很恐怖了:压缩的资源多大其实没关系,看图片的大小,假设一张图片7201334,那么它的大小就是 (72013344) /(10241024) = 3M, 100张图片就是300M ,这还不算上其他的开销…

…所以只能进行预加载,然后放空(不,如果你确定后面还会用到的话, 暂时不要用cc.loader.release 等函数释放,不然会炸…别问我为什么知道…)前面已用过且暂时不需要的资源了,怎么做?直接把缓存下来的spriteFrame数组清空就好了…让js自己去管这事儿吧…

过程如下:

1.预加载图片 spriteFrames : cc.spriteFrame = [] //放进去
2.拿出节点,赋值sprite.spriteFrame = spriteFrames[curSpriteFrame] ; 
3.这组图片用完了,回收 spriteFrames = [] //注意,其他地方如果有引用当前的spriteFrame , 那个spriteFrame是不会被释放的
4.跳到1

这样就能尽量保证图片的及时加载,而不容易跳帧了,由于时间关系,今天暂时就到这儿~ ~未完待续!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值