creator 版本3.7.3 pc测试热更
这两天在研究热更,有几个疑问请教一下
1.使用assetManager.loadBundle加载服务器端的bundle,第一次加载后,更新服务器端的bundle,第二次加载客户端并未更新服务器资源。文档说是版本信息在setting.json里,在主包里找到setting.json看见了版本信息,请问setting.json如何更新?
2.assetManager.loadBundle未包含加载进度,如果想显示进度条该如何处理?
-------认为是另一种方式热更(繁琐而灵活)------------------------------------------------------------------
3.看过简易教程,借用manifest的方式来做热更,需要添加搜索路径。然而main.js并不是可以随意修改的,于是想到放assert中加载的第一个ts文件中,如此做,这个文件将永远得不到更新。有没有更优解?
第一个问题,勾选md5不就可以了吗。
md5勾选过,主包setting.json未更新,导致子包版本依然读取的是老版本。要实现热更应该是先更新setting.json然后更新子包,第一问,问的是如何更新setting.json。或者是我的理解有误?
如果勾选md5了的话,那应该是main.js文件没有更新
你参考一下https://forum.cocos.org/t/topic/139407/8
楼主想要的是不重新进游戏实现热更新?
loadBundle并不会加载具体的资源,只是加载了配置,这个需要的是具体加载了多少byte的进度显示吗?
可以重启游戏,只是做个简单的热更。我看loadbundle操作简单,就想用它来快速实现热更,但是测试过程中发现版本文件(setting.json)没有更新,半天没找到解决方案,所以来论坛问一下。应该是某个点没理解到位
感谢你的链接,用这种方式可以解决问题3,似乎不能解决问题1
少回答了你一个问题:loadBundle在加载过程中会去检索更新对应版本,如果是有更新会从服务器下载,所以我想要得到下载的进度(下载了多少byte/多少个文件),不是加载的进度。
我可能明白你意思了,你要修改setting.json怕是要走热更,下载新的setting.json,新的setting中记录bundle的最新的MD5
对,可能这只是我想的方案。也许有什么理解不到位的地方,既然有检测更新功能,那么setting.json也应该有对应的更新手段,才算是一套完整的;还要手动做manifest那一套,是不是有点绕。
论坛有人实现过这种,为了减小包体,bundle里边只放资源,热更的时候构建两次,第一次勾选MD5构建出bundle,第二次不勾选MD5,构建出热更包,然后修改热更包中setting.json,把第一次构建出的bundle的MD5写进去。
看来只有手动拉一下setting.json,用拉到版本信息修改客户端的setting.json中的值。
如果构建bundle不勾选MD5,然后在热更重启前game.restart()前,清除一次bundle缓存,再重启后应该也可以加载到新的bundle资源,感觉这种应该也可以实现,但是没有试过。
这种就不是真正热更了,清除缓存后就是无脑更新了。
overrideSettings可以设置setting.json中的bundle信息,操作起来也不难。版本号也可以自己设定不用md5码,过几天按这个思路来走一遍,感觉这样是可行的。