Lua热更系统

介绍

使用脚本开发游戏业务逻辑其中一个好处就是代码可线上热更,不停机修复bug。
而热更代码的写法与需要被热更的文件的代码又有着密切的关系,本文介绍一种热更方法。


热更原理

Lua提供一个叫require的函数,实现文件的加载,require的作用可查看云风大大的参考手册说明
http://cloudwu.github.io/lua53doc/manual.html#pdf-require
当要热更一个已经被加载(require)过的模块,要做两件事件.

  • 将package.loaded[filename] = nil, 将模块置空.
  • 重新调用require,require(filename).

如果要热更的模块里面所用到的都是全局变量,那么只需要这样写
global_var = global_var
ok,新的模块内容就会重新被加载进内存了,而且全局变量也成功保留了热更前的值。
然而每个文件里面只定义全局变量,会破坏模块的可读性,试想一下,定义了一个类,但它并没有成员变量,用到的变量全是全局变量,这是一种怎样的感受。
所以我们要换一种写法,模块既可以有自己的变量,又可以被热更。


实现

形如一个类既有成员变量,又有成员函数,要实现热更一个模块同时又保留其原有变量,我们可以把模块的变量定义和函数定义分开,分别写在两个文件。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值