cocoscreator发布平台包含很多,QQ渠道要求比较严格些,主包最大支持4M,导致很多小游戏都需要做分包。
资源分包 从 v2.0.7 开始支持。
分包加载,即把游戏内容按一定规则拆分在几个包里,在首次启动的时候只下载必要的包,这个必要的包称为 主包,开发者可以在主包内触发下载其他子包,这样可以有效降低首次启动的消耗时间。
下面就开始正题。
1.在creator中
把需要分的包都这么操作,但是但是不可以把第一屏游戏的资源分出去,下面粘代码
onLoad() {
//分包加载
var self = this;
//初始化 注意先加这个
//加载分包数量
this.countSubPackge = 0;
//是否切换了场景
this.LoadSceneBool = false;
//加载分包 第一个 分包名字 第二个需要跳转场景的名字 第三个分包总数量
this.LoadSubPac('anims', 'load', 2);
this.LoadSubPac('images', 'load', 2);
//3S后切换场景 第一个 需要跳转场景的名字 第二个分包总数量
this.scheduleOnce(function () {
self.SceneMangerLoadScene('load', 2);
}, 3);
},
//这是三个方法
LoadSubPac (SubPackgeNameStr, LoadSceneNameStr, CountInt) {
var self = this;
console.log('开始加载分包');
cc.loader.downloader.loadSubpackage(SubPackgeNameStr, function (err) {
if (err) {
self.LoadSubPac(SubPackgeNameStr, LoadSceneNameStr, CountInt);
console.log('重新加载');
return;
}
self.SwitchLoadScene(LoadSceneNameStr, CountInt, SubPackgeNameStr)
});
},
/** 跳转场景 三秒延迟跳转场景 */
SceneMangerLoadScene(sceneName, PackageCount) {
if (this.countSubPackge >= PackageCount) {
cc.director.loadScene(sceneName);
console.log('跳转场景');
}
else
this.LoadSceneBool = true;
},
/** 跳转场景 */
SwitchLoadScene(sceneName, PackageCount, SubName) {
// cc.log("this.countSubPackge >= PackageCount ", this.countSubPackge, +" " + PackageCount);
this.countSubPackge += 1;
console.log('load subpackage successfully.--', SubName);
if (this.LoadSceneBool == true && this.countSubPackge >= PackageCount) {
cc.director.loadScene(sceneName)
console.log('跳转场景');
}
},
如果分不清到底什么资源会被第一屏占用 或者是因为游戏类型的关系 第一屏的资源都很大有个取巧的办法。
重新建一个新的scene 作为游戏的第一个场景把它作为主包,主包中只包含一个脚本和一个scene 以上的代码就可以写在这个脚本里,最后跳转可以调到游戏的第一屏了,这样子包可以随意选了。
以上内容为随手记录,方便日后自己看。
如有雷同纯属巧合,转载请注明出处。
网友评论