# 游戏分包加载

​分包加载,即把游戏内容按一定规则拆分为几个包,在首次启动时先下载必要的包,这个必要的包我们称为「主包」,开发者可以在主包内触发其它分包的下载,从而把首次启动的下载耗时分散到游戏运行中。

# 快手小游戏分包大小限制

目前小游戏分包大小有以下限制:

  • 整个小游戏所有分包大小总和不超过 30M
  • 单个分包不限制大小,主包不超过 6M

# 使用方法

# 分包配置

​使用分包功能,需要开发者在 game.json 中添加分包信息。

假设游戏包目录结构如下,且想使用分包加载 sence1, scene2 中的资源

game //游戏根目录
├── game.js //主包入口文件
├── game.json //子包信息配置文件
├── ***** //主包其它文件
├── subpackages
        └── sence1 // sence1 子包目录 : "subpackages/sence1/"
                └── game.js //sence1 子包入口文件
                └── *****
        └── sence2 // sence2 子包目录 : "subpackages/sence2/"
                 └── game.js //sence2 子包入口文件
                 └── *****

则可以在 game.json 中添加以下配置

{
    "subpackages": [
        {
            "name": "sence1",  //子包 sence1 的 name,对应 ks.loadSubpackage 接口中的 name参数
            "root": "subpackages/sence1/" //子包文件相对路径
        }, 
        {
            "name": "sence2", 
            "root": "subpackages/sence2/"
        }
    ]
}

​配置在 subpackages 字段内的目录,快手开放平台将按照配置打包成「分包」,没有配置在 subpackages 中的目录和 js,将会被打包到主包中,子包会从游戏资源中剥离,当游戏运行时,调用了 ks.loadSubpackage ,子包才会从快手开放平台远端下载并加载。

# 触发分包加载

​* 快手小游戏提供 ks.loadSubpackage API 来触发分包加载

示例代码:

let launchScene = "sence2"; //您的子包名称
let loadTask = ks.loadSubpackage({
	name: launchScene,
	success: function(res) {
		.... //执行你需要的逻辑,如加载场景	
	},
	fail: function(err) {
		console.log(err);
	}
});

loadTask.onProgressUpdate(res => {
	console.log(res);
});