【bundle】关于Bundle热加载,脚本更新的问题

拿来就用是吧~~~

项目中不要出现重名的脚本,因为编译的时候重名的脚本会加上后缀(1, 2, 3, …),这样会导致如果删除了其中一个,就会导致后缀顺序错乱,这样引用就会出问题了

哈哈,照着思路写了下,发现这个json文件,在想是不是构建的时候解析index.js,然后存到里面去的

嗯嗯,活到老学到老。

目前我是运行时解析(更新的时候解析一次)

嗯,感谢大佬的细心指导,我验证下。那个system.bundle.js这个是构建出来的文件,我在引擎只看到loader.js有类似的代码,但是我修改之后构建出来的system.bundle.js并没有生效,所以还是可以利用打包工具在build之后再插入你的修改,你是不是这样搞的?

是的,构建扩展,构建完后把代码加进去

这边验证了,也确实是删除了,但是重新loadBundle,会报找不到之前的classimage 是不是还得手动register这个class

不需要,你更新子包后先卸载之前的子包,再重新加载该子包,是这样操作的吗?

image


image

有的,更新之后也是有释放掉的。

用浏览器调试一下android,看一下吧。。。
https://docs.cocos.com/creator/manual/zh/editor/publish/debug-jsb.html

我是直接在电脑模拟器上测试验证的,tsFileNames.json在重新更新之后也成功保存了新的了,但是脚本却卸载掉了。

更新完后是要卸载之前子包中所有的脚本

有的,你看我的打印日志,现在报这个找不到class,其实也说明是卸载了的,就是重新loadBundle居然没有去重新加载,这个有点奇怪,我再调试看看。

不行呀……

大佬解决了吗
我也出现这个问题了。。。

大佬,这个是卸载挂在场景或 prefab 上的脚本,如果没有挂,就不会进到这里面