QQ小游戲 分包加載

2020-07-15 15:33 更新

分包加載

隨著小游戲的玩法越來(lái)越豐富,開(kāi)發(fā)者對(duì)于擴(kuò)大包大小的需求越來(lái)越強(qiáng)烈,所以我們推出了小游戲分包加載這一個(gè)功能。 所謂的分包加載,即把游戲內(nèi)容按一定規(guī)則拆分這幾包,在首次啟動(dòng)時(shí)先下載必要的包,這個(gè)必要的包我們稱(chēng)為「主包」,開(kāi)發(fā)者可以在主包內(nèi)觸發(fā)其它分包的下載,從而把首次啟動(dòng)的下載耗時(shí)分散到游戲運(yùn)行中。

分包加載包大小的限制

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

  • 整個(gè)小游戲所有分包大小不超過(guò) 16M (請(qǐng)使用0.1.29版本開(kāi)發(fā)者工具進(jìn)行上傳)

  • 單個(gè)分包/主包大小不能超過(guò) 4M

使用方法

1. 分包配置

需要先在 game.json 配置分包信息。

假設(shè)游戲的目錄結(jié)構(gòu)如下:

  1. ├── game.js
  2. ├── game.json
  3. ├── images
  4. ├── a.png
  5. ├── b.png
  6. ├── stage1
  7. └── game.js
  8. └── images
  9. ├── 1.png
  10. ├── 2.png
  11. └── stage2.js

game.json 中的配置:

  1. {
  2. {
  3. ...
  4. "subpackages": [
  5. {
  6. "name": "stage1",
  7. "root": "stage1/" // 可以指定一個(gè)目錄,目錄根目錄下的 game.js 會(huì)作為入口文件,目錄下所有資源將會(huì)統(tǒng)一打包
  8. }, {
  9. "name": "stage2",
  10. "root": "stage2.js" // 也可以指定一個(gè) JS 文件
  11. }
  12. ]
  13. ...
  14. }

配置在 subpackages 字段內(nèi)的目錄或 js 文件,將按照配置打包成一個(gè)個(gè)「分包」,沒(méi)有配置在 subpackages 中的目錄和 js,將會(huì)被打包到主包中。

注:目前不支持將開(kāi)放數(shù)據(jù)域目錄(即 openDataContext 配置目錄)設(shè)置為分包或置于某個(gè)分包下。

2. 分包加載

我們提供了 qq.loadSubpackage() API 來(lái)觸發(fā)分包的下載,調(diào)用 qq.loadSubpackage 后,將觸發(fā)分包的下載與加載,在加載完成后,通過(guò) qq.loadSubpackage 的 success 回調(diào)來(lái)通知加載完成。

同時(shí),qq.loadSubpackage 會(huì)返回一個(gè) LoadSubpackageTask,可以通過(guò) LoadSubpackageTask 獲取當(dāng)前下載進(jìn)度。

示例代碼:

  1. const loadTask = qq.loadSubpackage({
  2. name: 'stage1', // name 可以填 name 或者 root
  3. success(res) {
  4. // 分包加載成功后通過(guò) success 回調(diào)
  5. },
  6. fail(res) {
  7. // 分包加載失敗通過(guò) fail 回調(diào)
  8. }
  9. })
  10. loadTask.onProgressUpdate(res => {
  11. console.log('下載進(jìn)度', res.progress)
  12. console.log('已經(jīng)下載的數(shù)據(jù)長(zhǎng)度', res.totalBytesWritten)
  13. console.log('預(yù)期需要下載的數(shù)據(jù)總長(zhǎng)度', res.totalBytesExpectedToWrite)
  14. })
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)