v2.x web平台bundle支持zip

大概怎么搞??直接写在setting文件中吗?

其实思路和这个一样,手动压缩,然后解压,bundle加载,这个3.x版本也可以使用,可以自行测试下

人家是index.25d86.js,你搞成 GameNameXXXX.25d86.zip,下载过去就好了.

来了,新增一键打包,版本管理

  1. compress.js 一键打包脚本放在项目的根目录中,需要安装adm-zip模块,npm install adm-zip
  2. jszip.min.js 项目中设置成js插件,放在项目中就行
  3. ZipBundleLoader.ts 解压加载核心代码

打包读取思路:

  1. 通过 index.html文件,获取setting.js文件,根据bundleVers对象遍历打包assets目录下的分包目录,将对应的分包目录中的所有文件夹打包成zip文件(格式: 分包名.MD5.zip),最后删除目录中的文件夹
  2. 核心代码中通过cc.assetManager.downloader.bundleVers 获取setting.js文件中的bundleVers对象来获取对应分包的md5码

完整版:zip.zip (31.3 KB)

注意:理论上3.x版本也是可以使用的,思路很简单,手动打包 -> jszip解压 -> bundle加载

==========================
最新版本:

  1. 使用了单例的方式导出 (我核心代码中继承就是一个单例类,根据自己需求改就行)
  2. 解决资源留存问题和zip解压的问题,从全部解压放到内存中改成按需要解压读取,在内存中只保留zip索引和结构,减少内存的消耗同时如果再次解压相同的zip文件则会直接读取缓存优先从缓存中读取减少多次解压操作
  3. 新增自动清除资源问题,使用定时器来检测长时间不使用的资源缓存,减少内存消耗
  4. 新增bundle释放方法,手动释放
  5. 修复加载音效,特效,图集加载异常的问题

最新文件:zip.zip (33.8 KB)

============================
2.x版本自动打包插件来了(面板简陋,功能齐全,放心使用)
web-bundle-zip.zip (40.2 KB)

1赞

来看看解决方案

也是一种思路,我做了一个看看效果

看看能不能再补个进度条加载函数,感觉放在loading界面不错.

目前只能做假的进度条,加载一个完成回调一下然后+1这样,详细的比较麻烦

能否通过修改download-file.js文件的 downloadFile 方法来替换文件数据,这样的话代码会不会更简洁些,包含的文件范围也更多些

有做过测试吗,大概比下散文件快多少

download-file.js 毕竟是底层文件,后面更新版本不知道会不会升级等一些骚操作导致不可用,还是用官方的register API会好点。你可以根据你的思路来测试下

直接改成XMLHttpRequest,都是arrarBuffer.应该是可以的.

https://www.cnblogs.com/ai888/p/18646653

可以参考一下.

还没有做测试呢,还在优化中

后面搞搞,目前这个版本还有些问题,还在优化

真不错,点赞收藏

最新版本来了,请看解决方案,应该是最终版本了!!!!后面再搞个插件打包完自动压缩,哈哈哈哈哈!!!!!

2.x版本自动压缩插件来啦!!请看解决方案获取

根据大佬的方案整理了一个2.X版本简单的demo!
ZipBundleLoader.zip (2.9 MB)

1赞

可以的,哈哈哈

:grinning:
用AI改了一下老虎不是大猫的DEMO,把fetch改为http请求了.简单测试了一下,是可行的.归档.zip (1.3 MB)

就加了进度条打印,到时候,需要再用事件分发出来.