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è)必要的包我們稱為「主包」,開(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)如下:

├── game.js
├── game.json
├── images
│   ├── a.png
│   ├── b.png
├── stage1
│   └── game.js
│   └── images
│       ├── 1.png
│       ├── 2.png
└── stage2.js

game.json 中的配置:

{
{
  ...
  "subpackages": [
    {
      "name": "stage1",
      "root": "stage1/" // 可以指定一個(gè)目錄,目錄根目錄下的 game.js 會(huì)作為入口文件,目錄下所有資源將會(huì)統(tǒng)一打包
    }, {
      "name": "stage2",
      "root": "stage2.js" // 也可以指定一個(gè) JS 文件
    }
  ]
  ...
}

配置在 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)度。

示例代碼:

const loadTask = qq.loadSubpackage({
  name: 'stage1', // name 可以填 name 或者 root
  success(res) {
    // 分包加載成功后通過(guò) success 回調(diào)
  },
  fail(res) {
    // 分包加載失敗通過(guò) fail 回調(diào)
  }
})


loadTask.onProgressUpdate(res => {
  console.log('下載進(jìn)度', res.progress)
  console.log('已經(jīng)下載的數(shù)據(jù)長(zhǎng)度', res.totalBytesWritten)
  console.log('預(yù)期需要下載的數(shù)據(jù)總長(zhǎng)度', res.totalBytesExpectedToWrite)
})
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

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

編程獅公眾號(hào)