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

本文讨论了Lua语言在游戏开发中的热更新技术,特别是如何通过清除缓存和重新加载模块来实现代码更新。面对热更新后无法立即加载新代码的问题,探讨了可能的原因及解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

级别: 侠客
 
UID:  3249
精华:  0 
发帖:  29
可可豆:  1631 CB
威望:  1631 点
在线时间:  993(时)
注册时间:  2009-03-18
最后登录:  2017-03-22
沙发 : 发表于: 2015-09-11 10:38    发自: Web Page
只看该作者        
看一下,是不是路径的错误导致的。 
级别: 新手上路
UID:  400111
精华:  0 
发帖:  23
可可豆:  86 CB
威望:  86 点
在线时间:  83(时)
注册时间:  2014-11-09
最后登录:  2016-11-09
板凳 : 发表于: 2015-09-11 11:21    发自: Web Page
只看该作者        
回 1楼(sue602) 的帖子
如果路径错误了 重新启动加载的应该也是原来的文件吧 我是觉得缓存没有清除 
级别: 骑士
UID:  463739
精华:  0 
发帖:  350
可可豆:  395 CB
威望:  386 点
在线时间:  862(时)
注册时间:  2015-04-19
最后登录:  2017-07-03
3 楼:  发表于: 2015-09-11 16:40    发自: Web Page
只看该作者        
package.preload  package.load都要清
还要注意这个  ItemManager  是不是之前就挂在内存里的, 只有重新创建的ItemManage才会是新的
再需要注意的是app.managers.ItemManager  是不是都是这么写的 , 比如你之前写的是src.app.managers.ItemManager清理 app.managers.ItemManager是不管用的 
http://www.cnblogs.com/ColaZhang/
级别: 新手上路
UID:  400111
精华:  0 
发帖:  23
可可豆:  86 CB
威望:  86 点
在线时间:  83(时)
注册时间:  2014-11-09
最后登录:  2016-11-09
4 楼:  发表于: 2015-09-11 17:07    发自: Web Page
只看该作者        
回 3楼(ColaZhang) 的帖子
什么叫之前就挂在内存里   ItemManager加载完后每次create()会return一个local变量给同一个全局变量 这应该没问题吧?我把package.preload  package.load都清了 还是没效果 
级别: 新手上路
UID:  444583
精华:  0 
发帖:  23
可可豆:  32 CB
威望:  32 点
在线时间:  66(时)
注册时间:  2015-03-03
最后登录:  2017-04-07
5 楼:  发表于: 2015-09-15 09:41    发自: Web Page
只看该作者        
具体我也不知道什么意思。。但是看到热更新就进来了。
我看热更新是论坛里大神写的。他弄了一个更新器在一开始不是require(main) 而是这个热更新器 。
你可以先看下他的文章 很好的 
级别: 新手上路
UID:  400111
精华:  0 
发帖:  23
可可豆:  86 CB
威望:  86 点
在线时间:  83(时)
注册时间:  2014-11-09
最后登录:  2016-11-09
6 楼:  发表于: 2015-09-16 15:54    发自: Web Page
只看该作者        
回 5楼(an540545947) 的帖子
可能是要这样的 我估计这个是cocos的bug 我现在的办法就是更新完了以后再一次require(main) 虽然怪怪的 但至少暂时解决了问题 
级别: 新手上路
UID:  255509
精华:  0 
发帖:  14
可可豆:  19 CB
威望:  19 点
在线时间:  23(时)
注册时间:  2012-10-18
最后登录:  2017-05-18
7 楼:  发表于: 2015-09-22 17:40    发自: Web Page
只看该作者        
先清除一下缓存就好了,
cc.FileUtils:getInstance():purgeCachedEntries() 
级别: 新手上路
UID:  306734
精华:  0 
发帖:  5
可可豆:  5 CB
威望:  5 点
在线时间:  119(时)
注册时间:  2014-04-09
最后登录:  2017-06-24
8 楼:  发表于: 2015-10-12 16:10    发自: Web Page
只看该作者        
回 7楼(阿根) 的帖子
不行,应该jit的问题,require 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值