请问Creator2.4.0如何获取远端Bundle的的config.json的md5呢?

1.测试了下,如果远端bundle已经加载过一次,那相关资源就会下载到本地,而文档中对这块儿并没有详细介绍,只说是会一直在游戏过程中。
2.我修改了远端bundle的资源,关闭app重新打开,再次加载bundle,显示的还是第一次的内容,没有更新到。文档说要指定一个Hash值。

那么问题来了,我怎么动态获取到远端bundle的md5呢?

2赞

构建的时候在构建面板中勾选MD5 Cache,此时资源将生成并附加Hash,由此可解决资源缓存问题。
加载bundle代码如下:

  cc.assetManager.loadBunle("远程路径", (err, bundle)=>{});
  cc.assetManager.loadBunle("远程路径", {version: 'hash值'}, (err, bundle)=>{});

引擎的底层的downloader的loadbundle函数里,做了两件事情。

  • 下载config.json
  • 下载index.js

通过引擎加载代码:

  var config = `${url}/config.${version ? version + '.' : ''}json`;

我们可以看到,config的路径 = url + config.hash 值形成了一个绝对URL,通过GET方式去下载到这个配置文件。
version 的由来:

  var version = options.version || downloader.bundleVers[bundleName];
  options为loadBundle()的第二个参数
  downloader.bundleVers 为main.js中init的options

到这里就很清晰了,我们得出结论:

  • 如果是在同工程中生成的bundle,可以不传version,因为引擎帮我们init了options,里面有版本
  • 如果是分工程,settings的版本是分散的, 要么综合settings里的bundleVers, 要么loadBundle时传Hash。此时最好将版本在后台配置,通过下发来拼接给引擎底层下载。

那么,问题答案:

  • 同工程中构建,使用loadBundle时不需要传版本,非得传,通过 window._CCSettings.bundleVers[bundleName]可以获取到版本
  • 分工程中构建, cocos都是问你要版本,你不能通过cocos来要版本,非得要,通过其他手段获取,如请求服务端,服务端通过IO读取config的名称解析版本号,但建议是自己存储一个吧。
4赞

可是如果budle很多的话,不就后台要填好多的hash值,不太方便

老铁有解决办法吗?