Lua动态加载模块
来源:互联网 发布:linux 查看系统调用 编辑:程序博客网 时间:2024/06/04 18:22
重新加载模块
使用以上代码即可重新载入一个文件。
这样修改完lua代码后,可以不用重启程序立刻生效。
原代码
模块A:
模块Main:
调用Main.call()输出:
1
2
修改代码后
如果修改A为:
模块A:
然后通过RPC或其他方法调用reload("A"),然后再调用Main.call()输出:
1
2
4
可以看到3没有输出。
也就是说 Main.callBack = A.test1 记录的是老的A.test1,重新载入后调用的还是老的A.test1。所以没有输出3。
但是老的A.test1调用的A.test2,是直接调用而不是记录的函数变量,动态得在全局查询函数名时查到的是新的A.test2了。所以输出了4。
在重新载入一个模块后,要注意其他地方有没有保存本模块的函数变量。
一般来说有RPC call函数名到函数的映射,还有timer等,这些callback都是记录函数变量的。
RPC调用
下面一个远程客户端输入脚本,传到服务端由服务端的lua虚拟机执行的代码,主要是利用loadstring函数。
str参数就是输入的脚本,acc为当前session的唯一标志,这里是账号名。
可以预先准备一些当前session固定的常用的变量,比如这里c对应的就是玩家。客户端在写脚本的时候可以直接使用这些变量。
在改变了某个模块A的代码后,可以结合上面的reload(),在客户端输入 reload("a"),rpc调用服务端的Debug.exec,更改的lua代码可以即时生效。
- Lua动态加载模块
- Lua动态加载模块
- Lua 5.3 动态加载C模块
- lua 重新加载模块
- Lua加载模块
- lua加载动态库
- Lua自定义方式加载模块
- Lua自定义方式加载模块
- 模块动态加载技术
- Flex动态加载模块
- 模块动态加载-总结
- python动态加载模块
- dkms动态模块加载
- python动态加载模块
- 以自定义方式加载 lua 模块
- 以自定义方式加载 lua 模块
- 用preload加载Lua导出模块
- Erlang动态编译加载模块
- 一个超牛妈妈对儿子说的话(二)
- java的序列化
- 10 Famous Microsoft Interview Puzzles
- 一个超牛妈妈对儿子说的话(三)
- 一个超牛妈妈对儿子说的话(四)
- Lua动态加载模块
- [android UI]应用程序自适应屏幕大小
- Eclipse 启动Tomcat
- WinCE条件编译
- 获取本机的真实IP地址
- work thread和UI thread的区别(包括产生以及终结)(转)
- 通过这种方式你就可以取到所有可以执行此intent的apk信息
- Android手机常见问题以及解决办法[非开发]
- SPLIT 拆分字符串