随着小游戏的玩法越来越丰富,开发者对于扩大包大小的需求越来越强烈,所以微信推出了小游戏分包加载这一个功能。

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

分包加载包大小限制

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

  • 整个小游戏所有包大小不超过8Ml
  • 单个分包/主包大小不能超过4M

分包配置

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

假设游戏的目录结构如下:

|----game.js

|----game.json

|----images

|    |----a.png

|    |----b.png

|----stage1

|    |----game.js

|    |----images

|         |----1.png

|         |----2.png

|----stage2.js

我们将stage1文件夹作为一个分包,把stage2.js作为一个分包,那么在game.json中的配置为:

{“subpackages”: [{“name”: “stage1”,“root”: “stage1”  //可指定一个目录,根目录下game.js会作为入口文件,目录下所有资源将会统一打包
},{“name”: “stage2”,“root”: “stage2.js” //也可以指定一个JS文件
}]}

配置在subpackages中的目录或js文件,将按照配置打包成一个个【分包】,没有配置在subpackages中的目录或者js,将会被打包到主包中。

分包加载

微信提供了wx.loadSubpackage() API来触发分包的下载,调用wx.loadSubpackage后,将触发分包的下载与加载。

在加载完成之后,通过wx.loadSubpackage的success函数来通知加载完成。

同时,wx.loadSubpackage会返回一个LoadSubpackageTask,可以通过LoadSubpackageTask获取当前下载进度。

示例代码:

const loadTask = wx.loadSubpackage({name: 'stage1', // name可以填为name或者root
success: function(res){// 分包加载完成后通过success回调
},fail: function(res){// 分包加载失败通过fail回调
}})loadTask.onProgressUpdate(res => {console.log('下载速度',res.progress);console.log('已经下载的数据长度',res.totalBytesWritten);console.log('预期需要下载的数据总长度', res.totalBytesExpectedToWrite)})    

老版本兼容

由微信后台编译来处理旧版本客户端的兼容,后台会编译两份代码包,一份是分包后代码,另一份是整包的兼容代码。对于老客户端,会去下载整包代码启动。

开发者在基础库2.1.0以下版本不需要调用wx.loadSubpackage触发加载,因为2.1.0以下版本不存在wx.loadSubpackage方法。

老版本下,需要开发者调用require触发分包入口文件的加载。例如:

require(‘stage1/game.js’)

如果不打算兼容老版本,开发者可以通过mp小游戏后台配置端屏蔽2.1.0以下基础版的用户。

已知BUG

目前Android无法加载分包下的字体文件,预计会在下个客户端版本中修复。

本节内容就为大家介绍到这里,下节将为大家介绍小游戏音频播放的相关内容。

学习是一条令人时而喜极而泣,时而郁郁寡欢的道路。如果您觉得这篇文章对您有所帮助,请您酌情赞赏!

转载于:https://www.cnblogs.com/chentiantian921017/p/9564123.html

微信小游戏开发(9)- 分包加载相关推荐

  1. 微信小程序开发动感十足的加载动画--都在这里!

    微信小程序开发动感十足的加载动画--都在这里.jpg 1. 概述 我们在学习微信小程序时,应该会遇到载入图片或者动画需要等待的情况,那么这个等待的画面我们应该怎么编写呢?今天我们就分享这样的小教程. ...

  2. 微信小游戏使用Java实现加载res文件

    参考:发布到微信小游戏 服务器加载是因为小程序包大小有8M大小限制(过去4M),其中占用较多的就是res文件,去掉res文件,很容易控制在8M以内 需要注意的问题: 具体实现步骤: 1. 构建ccc项 ...

  3. 动态加载子节点_微信小游戏开发之场景切换和常驻节点传递数据

    主题 场景切换 场景间数据传递方式 小游戏全局背景音效 特别说明 CocosCreator微信小游戏开发系列文章,是我在逐步开发过程中,基于官方文档之上,记录一些重点内容,以及对官方文档中有些知识点的 ...

  4. 白鹭引擎正式支持微信小游戏开发

    12月28日微信迎来更新,正式上线小游戏,并开放了小游戏开发文档和开发者工具.在微信发布新版本后,白鹭引擎立即添加了对于微信小游戏开发的支持,开发者只需要使用白鹭引擎的最新版本,通过使用白鹭引擎完整工 ...

  5. 搭建微信小游戏开发环境总结

    这篇文章主要解决以下问题 1.一键申请泛域名证书并到期自动更新 2.Nginx配置https 3.本地资源映射到外网 4.介绍CocosCreator构建发布微信小游戏时远程服务器地址如何配置 文章目 ...

  6. 《欢乐坦克大战》微信小游戏开发总结

    <欢乐坦克大战>微信小游戏开发总结 <欢乐坦克大战>微信小游戏开发总结 前言 <欢乐坦克大战>是一款支持3V3实时对战并首批参与上线的微信小游戏中的作品.因为该游戏 ...

  7. 白鹭引擎拉伸高度_答疑汇总|白鹭引擎架构师开源中国社区分享微信小游戏开发技巧...

    原标题:答疑汇总|白鹭引擎架构师开源中国社区分享微信小游戏开发技巧 1月31日-2月6日,开源中国社区邀请白鹭引擎首席架构师王泽以"微信小游戏开发技巧分享"为主题,为广大开发者带来 ...

  8. 微信小游戏开发实战教程14-闯关模式的实现

    这是微信小游戏开发实战系列的第14篇. 本文主要内容是介绍精致1010闯关模式的设计和实现思路. 如果你没有任何的游戏开发经验,欢迎阅读我的"人人都能做游戏"系列教程,它会手把手的 ...

  9. 微信小游戏开发教程-游戏实现3

    微信小游戏开发教程-游戏实现3 对象池 由于游戏过程中会创建很多临时对象,这些对象很快又不再使用,垃圾回收器也能帮我们主动回收这部分垃圾,但是回收时间不可控制,同时增大了创建对象的开销,所以我们使用对 ...

  10. 微信小游戏开发实战教程13-随机生成形状功能的实现

    微信小游戏开发实战系列的第13篇. 本节内容包括:通过使用列表来实现可以设置权重的随机功能,以及游戏中的随机生成形状功能的具体实现. 如果你没有任何的游戏开发经验,欢迎阅读我的"人人都能做游 ...

最新文章

  1. 教你怎么修改个性开机画面
  2. 基于pytorch开发CNN提取全连接层作为特征
  3. mysql悲观锁 更新_MySQL学习笔记(四)悲观锁 for update
  4. c语言函数能改变指针吗,如何修改传递给C中函数的指针?
  5. 技术实践第三期|HashTag在Redis集群环境下的使用
  6. rfc 查看工具_用于系统管理员的杀手级工具,Skype替代品,提高Linux技能,6个必读的RFC等
  7. 无心剑中译迪米特利·马丁《我是谁》
  8. servlet mysql insert_servlet+mybatis 实现mysql的增删改查实例
  9. batch spring 重复执行_可能是最漂亮的Spring事务管理详解
  10. 使用oracle/mysql/tidb由空格引发的血案解析
  11. 创业过程中一定会引进纯资金投资人
  12. html文本框光标位置,html的文本框显示光标 如何在htmlText文本框光标处插入字符...
  13. token怎么获取 php,如何用php获取某个页面中的input的csrf_token?
  14. java linux root权限管理_Linux--开启root用户并允许管理员登录
  15. 在 Linux 中怎样将 MySQL 迁移到 MariaDB 上
  16. linux学习——文件系统结构
  17. NS3学习之整体介绍
  18. 电脑蓝屏c语言代码大全,电脑蓝屏代码C0000218怎么解决方法
  19. java中extend与implement的区别
  20. 干掉Google Base? 微软欲推Fremont服务 (转自donews.com)

热门文章

  1. python编程从入门到实践看完了看什么-小白Python编程从入门到实践——列表是什么...
  2. python怎么读取txt文件数据保存数组中-python将txt等文件中的数据读为numpy数组的方法...
  3. 在当当买了python怎么下载源代码-爬虫实战一:爬取当当网所有 Python 书籍
  4. python常用命令大全-Python pip 常用命令汇总
  5. 运行python需要网吗-vs能运行python吗
  6. python装饰器-Python基础-20装饰器
  7. 学python需要什么文化基础-和尧名大叔一起从0开始学Python编程-循环
  8. python读取excelsheet-python读取excel文件中所有sheet表格
  9. python 难度-python上手难度算较低
  10. python软件怎么用-如何使用Python自动控制windows桌面