关于热更新时怎么清楚package.loaded重新加载

我事先加载了ItemManager 然后进行热更新这个ItemManager 更新结束后执行下面的代码想要重新加载
package.loaded"app.managers.ItemManager"] = nil
self.ItemManager= require(“app.managers.ItemManager”):create()
执行完后直接进入游戏 发现加载的还是原来的ItemManager 当我重新启动游戏时才会正确加载新的ItemManager 请问这是为什么 这样不能清楚干净么

看一下,是不是路径的错误导致的。

如果路径错误了 重新启动加载的应该也是原来的文件吧 我是觉得缓存没有清除

package.preload package.load都要清
还要注意这个 ItemManager 是不是之前就挂在内存里的, 只有重新创建的ItemManage才会是新的
再需要注意的是app.managers.ItemManager 是不是都是这么写的 , 比如你之前写的是src.app.managers.ItemManager清理 app.managers.ItemManager是不管用的

什么叫之前就挂在内存里 ItemManager加载完后每次create()会return一个local变量给同一个全局变量 这应该没问题吧?我把package.preload package.load都清了 还是没效果

具体我也不知道什么意思。。但是看到热更新就进来了。
我看热更新是论坛里大神写的。他弄了一个更新器在一开始不是require(main) 而是这个热更新器 。
你可以先看下他的文章 很好的

可能是要这样的 我估计这个是cocos的bug 我现在的办法就是更新完了以后再一次require(main) 虽然怪怪的 但至少暂时解决了问题

先清除一下缓存就好了,
cc.FileUtils:getInstance():purgeCachedEntries()

1赞

不行,应该jit的问题,require