CocosCreator 的 AssetsBundle 来了!

assets-bundle插件基于官方的分包策略。

之前完成过另一款分包插件 subpackage-tools 项目上线一年,没有任何问题。该插件完全基于分包热更完成。现在插件商店已经看不到它了,插件的核心只是分离资源而已,真正需要在项目中使用,必须要自己完成分包热更的项目逻辑,所以一直没有出使用demo,被不少人诟病,汗颜!

官方的分包加载已经基本可以用于原生环境,其中代码的分包在原生环境App启动速度上有较大帮助,但是原生资源的分包仅对小游戏环境有降低包体的作用,对原生环境没有任何作用。


插件在官方分包的策略上 加强了对原生环境的支持: 资源分包
插件核心功能

  • 接管官方分包策略
  • 追加分离出非原生资源(import资源)
  • 对分包追加热更功能
    支持三种分包模式
  • 本地包: 官方分包
  • 热更包: 在本地包的基础上对分包最佳热更功能 使用前先检查资源版本
  • 远程包: 在热更包的基础上将分包从构建项目中分离出来 使用前必须先下载远程包

插件作用: 降低App包体大小,加快App启动速度。适用于大厅游戏和关卡游戏

唯一遗憾的事没能降低setting.js的大小,研究发现资源不放在 resources 目录下也是可以动态加载的,但是不放在该目录下又需要动态加载的资源大部分都不会参与项目构建,全部堆在一个场景里倒是可以解决问题,但是明显不怎么优雅。斟酌后还是放下了对setting.js的手术刀

插件支持自动 zip 压缩 import 和 raw-assets 目录
基于 2.3.0版本Mac下开发,目测在 2.x版本都是可以跑的 至于win环境好不好使我就不知道了 ,欢迎提Bug。

插件简单介绍:

  • 所有.manifest文件都放在 assets/resources/Manifest 目录 插件会完全操作(删除、写入)这个目录,如果冲突请自行转移目录内资源
  • 生成的子包全部放在 ${project}/HotUpdate/${项目分支}/目录 同样是完全操作这个目录,如果冲突请自行转移目录内资源
  • 支持Debug模式,启动该模式 分包会被统一放进 ${project}/HotUpdate/${项目分支}/Debug目录 对应的远程热更地址也会追加 “http://host.com/${项目分支}/Debug
  • 支持包名搜索,当子包较多时可以使用包名搜索功能
  • 插件自动和手动校验子包的资源安全性(是否丢失资源和是否引用了其他私有子包的资源)
  • 插件支持自动校验当前项目的分包设置与插件的分包设置是否一致
  • 支持手动清空和设置项目分包
  • 支持自动和手动向Manifest目录中导入远程分包的空清单文件
  • 支持 zip 压缩子包资源
  • 支持三种分包模式
  • 如果不设置任何子包 则该插件为一个简单的热更插件
  • 如果不需要本插件,卸载或者不打开本插件即可

使用方法:

  • 编辑器面板->扩展->assets-bundle
  • 配置好主包以及子包信息
  • 打开构建面板->构建 必须至少构建两次以上
  • 检查控制台是否有爆红 如果有,必须要先解决爆红问题
  • 检测HotUpdate目录是否生成对应的主包和子包 检测主包和子包是否完整(初次使用小心点)
  • 检查无误后,打开AndroidStudio或者xcode编译App

目前插件已经完成了资源分离的测试,仅初步完成了分包热更下载的测试
本插件仅是一个项目分包的工具,分包热更的逻辑代码请自行根据自身项目完成
没有demo,完全开源
被第一版插件(subpackage-tools)的地狱回调恶心到了,这版插件采用了 await 写法,逻辑上清晰一些,但是本次插件的核心逻辑写在了主线程上,修改代码会造成编辑器奔溃或插件无法打开的情况
插件刚完成,还是热乎的。
https://github.com/zPiggy/assets-bundle

注意
1.插件目前不支持 win 环境使用,非常抱歉,等我找个 win 电脑。。。。 有兴趣的朋友可以提交PR
2.插件不支持勾选【内联所有 SpriteFrame】和 【合并图集中的 SpriteFrame】
3.目测插件兼容 2.x 版本

26赞

:slightly_smiling:前排围观下,有空研究下

mark一下。

:2:

点赞,大佬牛逼…… 我们春节后也会启动 2.5 的内测和公测,提供官方的 AssetBundle 支持。不过似乎你这个会更全面一些。

2赞

mark, 火钳刘明

mark!

mark

什么时候有 代码+资源分离方案

现在的官方分包就能做到代码+原生资源分离

mark

mark1

mark

此贴必火,果断留名,大神牛批。
这个应该算是 subpackage-tools 的升级版了吧。
刚学会用 subpackage-tools,一套代码,确实也可以实现分包

如果你之前已经使用了 subpackage-tools 工具,并在项目中完成了【分包热更】的代码逻辑。切换新插件,仅需在旧【分包热更】的逻辑基础上,在分包热更完成后追加 cc.loader.downloader.loadSubpackage 逻辑即可

ccc v2.2.2

大佬,发现一个问题,非常简单的一个DEMO,帮看下~
DEMO:HotUpdateDemo3.zip (2.0 MB)
构建问题:
热更分包/远程分包,构建的时候,报红如:找不到目录: assets\modules\hall

插件小问题:
远程分包,构建生成的 manifest 文件中版本号,被写死为 0.0.1 了。

为项目设置插件面板配置的子包 – 这个无效,清除是可以的。

删除子包一条资源目录(点击后面垃圾桶图标),面板失去焦点了,点击其他输入框输入,无法输入,从其他页面切换回插件面板则正常

看你的目录格式,你好像是在 win 下使用,这个插件完全没有适配win,我这边没有win电脑,我只能盲目转一下目录格式

1.你的子包不是在 resources 目录下,如果资源没有直接或者间接被场景引用,这个资源是不会参与构建的,所以部分不参与构建的资源会找不到。

2.远程分包的版本号写死 0.0.1 是设计如此,因为远程分包会被完全从App中分离出来,使用前会必须先完全下载(热更)所有资源,所以版本号必须是一个最低版本,其次是 资源清单(assets字段)为空,这样才能保证远程包第一次热更时能完全下载所有资源

3.其他问题,应该就是目录为win格式导致的

1赞

关于 win 环境下使用插件的问题,实在抱歉,没有win电脑,很难修复win环境下的问题,而且最近手头较忙,估计要年后修复

mark

弱弱的问一句 那2.4去哪儿了。。。