AssetManager.loadBundle 几个问题汇总一下

1、loadBundle没有进度回调
2、远程bundle构建时不能加密脚本,代码直接暴露。
3、loadBundle指定版本加载远程包不缓存最新bundle
4、远程hundle加载兼容性问题,(APP端:2.4.3不能加载2.4.2导出的远程bundle,web端:可以跨版本)多数情况应该是:主程序维持版本基本不变,后续的子程序可能会一直升级版本。

回答第一个问题:
cc.assetManager.loadBundle(name, {onFileProgress: (data) => { }}, call)

这样就可以有进度回调,data返回的就是进度数据

居然没有文档,需要自己去试回调的参数。
测试结果为返回2个参数:onFileProgress: (loaded, total)
一个远程包大量的文件,只给了2次回调,从数据看,回调参数应该是字节数。
建议官方补充好文档。此功能还是非常常用的。

回调参数不是文件数,也不是字节数,不知道是什么。

1、loadBundle没有进度回调

官方 loadBundle 只是加载了 config.json 文件. 这个接口的进度回调没有意义; 如果需要回调可以这样操作:

  • 一个新的bundleVersion 默认未下载… 第一次时需要下载.
  • 如果资源都被bundle内的场景引用. 可以使用 preloadScene 接口的进度回调进行模拟下载过程.
  • 如果资源都被某个Prefab引用,可以使用preload 接口的进度回调模拟下载过程
  • 如果是离散资源. 把它们放到一个目录下.然后使用preloadDir 的接口进度回调模拟下载过程.
  • 模拟过下载的bundle设置为已下载. 下次可直接加载.
  • 可以在程序的每次生命周期都这么操作.然后给玩家进度显示.虽然下载过的资源后的进度条会比较快.

2、远程bundle构建时不能加密脚本,代码直接暴露。

测试 2.4.3 版本构建可以加密脚本.

3、loadBundle指定版本加载远程包不缓存最新bundle

目前测试没遇到. 是不是 远程包的url变了? 或者设备兼容?

4、远程hundle加载兼容性问题,(APP端:2.4.3不能加载2.4.2导出的远程bundle,web端:可以跨版本)多数情况应该是:主程序维持版本基本不变,后续的子程序可能会一直升级版本。

官方的坑.你可以根据客户端版本号进行下发对应 version . 或 bundle url

3赞