QQ小游戲 分包加載

2020-07-15 15:33 更新

分包加載

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

分包加載包大小的限制

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

  • 整個小游戲所有分包大小不超過 16M (請使用0.1.29版本開發(fā)者工具進行上傳)

  • 單個分包/主包大小不能超過 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/" // 可以指定一個目錄,目錄根目錄下的 game.js 會作為入口文件,目錄下所有資源將會統(tǒng)一打包
    }, {
      "name": "stage2",
      "root": "stage2.js" // 也可以指定一個 JS 文件
    }
  ]
  ...
}

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

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

2. 分包加載

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

同時,qq.loadSubpackage 會返回一個 LoadSubpackageTask,可以通過 LoadSubpackageTask 獲取當(dāng)前下載進度。

示例代碼:

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


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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號