# 游戏分包加载
分包加载,即把游戏内容按一定规则拆分为几个包,在首次启动时先下载必要的包,这个必要的包我们称为「主包」,开发者可以在主包内触发其它分包的下载,从而把首次启动的下载耗时分散到游戏运行中。
# 快手小游戏分包大小限制
目前小游戏分包大小有以下限制:
- 整个小游戏所有分包大小总和不超过 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 来触发分包加载
- ks.loadSubpackage 调用成功后快手小游戏会自动 require 分包目录下的 game.js)。 * 可以通过 LoadSubpackageTask.onProgressUpdate 接口获取分包加载进度。
示例代码:
let launchScene = "sence2"; //您的子包名称
let loadTask = ks.loadSubpackage({
name: launchScene,
success: function(res) {
.... //执行你需要的逻辑,如加载场景
},
fail: function(err) {
console.log(err);
}
});
loadTask.onProgressUpdate(res => {
console.log(res);
});