微信小游戏开发(9)- 分包加载
随着小游戏的玩法越来越丰富,开发者对于扩大包大小的需求越来越强烈,所以微信推出了小游戏分包加载这一个功能。
所谓的分包加载,即把游戏内容按照一定的规则拆分成几个包,在首次启动时先下载必要的包,这个必要的包我们称为【主包】,开发者可以在主包内触发其他分包的下载,从而把首次下载的耗时分散到游戏运行中。
分包加载包大小限制
目前小游戏分包大小有如下限制:
- 整个小游戏所有包大小不超过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)- 分包加载相关推荐
- 微信小程序开发动感十足的加载动画--都在这里!
微信小程序开发动感十足的加载动画--都在这里.jpg 1. 概述 我们在学习微信小程序时,应该会遇到载入图片或者动画需要等待的情况,那么这个等待的画面我们应该怎么编写呢?今天我们就分享这样的小教程. ...
- 微信小游戏使用Java实现加载res文件
参考:发布到微信小游戏 服务器加载是因为小程序包大小有8M大小限制(过去4M),其中占用较多的就是res文件,去掉res文件,很容易控制在8M以内 需要注意的问题: 具体实现步骤: 1. 构建ccc项 ...
- 动态加载子节点_微信小游戏开发之场景切换和常驻节点传递数据
主题 场景切换 场景间数据传递方式 小游戏全局背景音效 特别说明 CocosCreator微信小游戏开发系列文章,是我在逐步开发过程中,基于官方文档之上,记录一些重点内容,以及对官方文档中有些知识点的 ...
- 白鹭引擎正式支持微信小游戏开发
12月28日微信迎来更新,正式上线小游戏,并开放了小游戏开发文档和开发者工具.在微信发布新版本后,白鹭引擎立即添加了对于微信小游戏开发的支持,开发者只需要使用白鹭引擎的最新版本,通过使用白鹭引擎完整工 ...
- 搭建微信小游戏开发环境总结
这篇文章主要解决以下问题 1.一键申请泛域名证书并到期自动更新 2.Nginx配置https 3.本地资源映射到外网 4.介绍CocosCreator构建发布微信小游戏时远程服务器地址如何配置 文章目 ...
- 《欢乐坦克大战》微信小游戏开发总结
<欢乐坦克大战>微信小游戏开发总结 <欢乐坦克大战>微信小游戏开发总结 前言 <欢乐坦克大战>是一款支持3V3实时对战并首批参与上线的微信小游戏中的作品.因为该游戏 ...
- 白鹭引擎拉伸高度_答疑汇总|白鹭引擎架构师开源中国社区分享微信小游戏开发技巧...
原标题:答疑汇总|白鹭引擎架构师开源中国社区分享微信小游戏开发技巧 1月31日-2月6日,开源中国社区邀请白鹭引擎首席架构师王泽以"微信小游戏开发技巧分享"为主题,为广大开发者带来 ...
- 微信小游戏开发实战教程14-闯关模式的实现
这是微信小游戏开发实战系列的第14篇. 本文主要内容是介绍精致1010闯关模式的设计和实现思路. 如果你没有任何的游戏开发经验,欢迎阅读我的"人人都能做游戏"系列教程,它会手把手的 ...
- 微信小游戏开发教程-游戏实现3
微信小游戏开发教程-游戏实现3 对象池 由于游戏过程中会创建很多临时对象,这些对象很快又不再使用,垃圾回收器也能帮我们主动回收这部分垃圾,但是回收时间不可控制,同时增大了创建对象的开销,所以我们使用对 ...
- 微信小游戏开发实战教程13-随机生成形状功能的实现
微信小游戏开发实战系列的第13篇. 本节内容包括:通过使用列表来实现可以设置权重的随机功能,以及游戏中的随机生成形状功能的具体实现. 如果你没有任何的游戏开发经验,欢迎阅读我的"人人都能做游 ...
最新文章
- 教你怎么修改个性开机画面
- 基于pytorch开发CNN提取全连接层作为特征
- mysql悲观锁 更新_MySQL学习笔记(四)悲观锁 for update
- c语言函数能改变指针吗,如何修改传递给C中函数的指针?
- 技术实践第三期|HashTag在Redis集群环境下的使用
- rfc 查看工具_用于系统管理员的杀手级工具,Skype替代品,提高Linux技能,6个必读的RFC等
- 无心剑中译迪米特利·马丁《我是谁》
- servlet mysql insert_servlet+mybatis 实现mysql的增删改查实例
- batch spring 重复执行_可能是最漂亮的Spring事务管理详解
- 使用oracle/mysql/tidb由空格引发的血案解析
- 创业过程中一定会引进纯资金投资人
- html文本框光标位置,html的文本框显示光标 如何在htmlText文本框光标处插入字符...
- token怎么获取 php,如何用php获取某个页面中的input的csrf_token?
- java linux root权限管理_Linux--开启root用户并允许管理员登录
- 在 Linux 中怎样将 MySQL 迁移到 MariaDB 上
- linux学习——文件系统结构
- NS3学习之整体介绍
- 电脑蓝屏c语言代码大全,电脑蓝屏代码C0000218怎么解决方法
- java中extend与implement的区别
- 干掉Google Base? 微软欲推Fremont服务 (转自donews.com)
热门文章
- python编程从入门到实践看完了看什么-小白Python编程从入门到实践——列表是什么...
- python怎么读取txt文件数据保存数组中-python将txt等文件中的数据读为numpy数组的方法...
- 在当当买了python怎么下载源代码-爬虫实战一:爬取当当网所有 Python 书籍
- python常用命令大全-Python pip 常用命令汇总
- 运行python需要网吗-vs能运行python吗
- python装饰器-Python基础-20装饰器
- 学python需要什么文化基础-和尧名大叔一起从0开始学Python编程-循环
- python读取excelsheet-python读取excel文件中所有sheet表格
- python 难度-python上手难度算较低
- python软件怎么用-如何使用Python自动控制windows桌面