最近在研究H5的优化,因为之前完全没接触过游戏这行,可以说是完全的小白了。
刚完成基本功能的时候,整个游戏构建发布,从加载loading画面到进入主界面、游戏画面 全程要经历20分钟。(我也是服了我自己了)
后来一点一点看论坛求助、看文档教学,现在终于优化到 整个过程经历要3分钟(这里别吐槽,因为UI还没优化,每个图集都几M,下载下来要好慢)
说说我做的优化吧,也希望有大佬能指正下不够完美的地方
1、每个界面单独的图都做成图集,减少不必要的下载量 做图集我用的是TexturePackerGUI
2、主界面、游戏画面的UI原来都是一个个在creator界面创建,有大量的重复加载,所有速度也因此翻了几倍。
后来直接把节点都做成预制体,挂在场景的脚本中,要用到的时候就用cc.instantiate直接实例化创建。
重复的都用代码来创建或复制,这里又减少了大量的重复加载。
(其实我看到麒麟子、小叫花子涛大神们都是用动态加载的cc.loader ,但我还是没研究懂load完之后的内存方面问题,暂时不敢全部换成load)
3、在最开始的loading界面做一个进度条,开始加载切换到主场景的时候,就把全部纹理都下载了(当然,loading的画面也会因此变得要比较多的时间)但加载完,后面打开就变得流畅了。
加载的方法我用的是
cc.loader.loadResDir(URL,cc.SpriteFrame,function(completedCount,totalCount,item){
self.loadBar.getComponent(cc.ProgressBar).progress = completedCount/totalCount
},function(){
cc.director.loadScene("main")
cc.log("完成了")
})
4、那些比较大的预制体 或者 弹出窗口类型的预制体都勾选上延迟加载,这样就不会抢占加载的时间了,在点击打开的时候才去单独加载进来,就显得流畅很多了。
暂时总结出来的就这么多,我知道还有一大堆坑我没解决,希望知道的大佬帮忙指出下