大神们如何重启lua环境 热更新需要用到
第一步,需要将每个文件都模块化。
第二步,将所有文件的path_name列入一个table里面
第三步,写个reload函数
for … do
package.loaded[path_name] = nil
module_name = require(path_name)
end
基本就这样将所有的lua文件重新加载了。当然,肯定有一些基础的文件不能热的,比如这个reload函数所在的文件。
1赞
谢谢 原来这样重启lua环境。我本以为可以从luaengine 层面去做这个事情
这样写容易出问题,package.loaded还未清理完毕,require(path_name)文件里如果也有require的话,就会导致还是引用到之前的LUA文件,应该在package.loaded[path_name] = nil全部释放后再重新require
2赞
谢谢 刚看了下代码 应该是可以达到重启的效果 谢谢了。
状态机的函数将自己的状态机强制删除,确实有些危险。
好像重启多次, 就会出现问题, 报function refid ‘14’ 开头的错误.