一、tolua与xlua的来源
首先tolua出现的要比xlua早,tolua是一群志同道合的人一块儿开发出来的,属于独立开发;xlua是2016年的下半年腾讯发布的,要说二者的优缺点,是各有利弊的,那么接下来将主要介绍二者在热更新方面的区别。
二、热更新简述
1、tolua热更新
对于tolua而言,其热更新主要是依托于LuaFramework框架的。其中需要注意的是:lua调用C#,是通过"."来调用非静态的变量及静态的变量与方法的;用“:”调用非静态方法。tolua更新的详细步骤就不在这里详细叙述了,因为本人也是菜鸟一枚了,这块儿也还没来得及好好看嘞。~~~~~~~~~
2、xlua热更新
大体流程:
首先开发业务代码,然后在所有可能出现问题的类上打上HOTFIX的标签,在所有Lua调用的方法上打上LuaCallCSharp标签,在所有CSharp调用Lua的方法上打上CSharpCallLua。。。打包发布。。。打开客户端(手机上的游戏)时,会对比MD5码,若MD5码有更改,才会进行热更新,修改bug时只需要更新lua文件。修改资源时只需要更新ab包,用户只需要去下载Lua文件和ab包。

详细步骤:
首先导入xlua相关文件(xlua相关文件可以到githua中去下载)到当前工程中;

在设置面板中开启热更新才可以完全使用:

在File==》Build Settings==》点击Player Settings出现右边界面,填写热更新名称即可开启;

当工程中脚本有更新时,【只要有任何变动】,就需要重新生成和注入脚本,若出现花式报错,就清除所有,并重新生成和注入。

配置成功。

【如何才能证明配置成功?

先点Generate Code

再点Hotfix Inject In Editor

出现以下即可

tolua 热更 tolua热更新_tolua


】先点击Clear Generated Code,再点击Genereted Code(寻找当前所有目录下和xlua热更新相关的代码打上热更新标签):

tolua 热更 tolua热更新_tolua 热更_02

在需要进行热更新的C#脚本中引用using xlua命名空间,在你认为有可能进行热更新的类上需要提前打上Hotfix标签。

tolua 热更 tolua热更新_tolua_03


运行后,需要对LuaEnv环境进行释放,如何释放?

新建test.lua脚本中添加对应函数的释放/删除等操作。

tolua 热更 tolua热更新_tolua_04

注意:在lua调用C#的私有变量时该怎么操作?
正常情况下,我们是无法通过lua直接访问到C#中私有变量的,然而xlua机制为我们提供了一个非常简单的解决方案,当我们需要访问某个C#类中的私有变量时,只需要在lua代码中加上一句:xlua.private._accessible(CS.ChinarTest)
然后,我们就可以访问到C#中的ChinarTest泪中的私有变量了。