xLua 2.1.6 发布,腾讯开源的手游热更新解决方案

organiccat 发布于2年前
0 条问题

xLua

xLua 是腾讯开源的手游热更新解决方案,有以下特性:

Unity 下 Lua 编程支持

xLua 为 Unity 增加 Lua 脚本编程的能力,进而提供代码逻辑增量更新的可能。当然不仅仅如此,在 coco2dx 上的实践告诉我们,以 Lua 为主打语言的游戏客户端编程是可行的。

C# 下 Lua 编程支持

xLua 也支持非 Unity 下的 C# 环境使用,通用版本的介绍请看这里

xLua 的突破

xLua 在功能、性能、易用性都有不少突破,这几方面分别最具代表性的是:

  • Unity 全平台热补丁技术,可以运行时把 C# 实现(方法,操作符,属性,事件,构造函数,析构函数,支持泛化)替换成 lua 实现;

  • 自定义 struct,枚举在 Lua 和 C# 间传递无 C# gc alloc;

  • 编辑器下无需生成代码,开发更轻量;

xLua 2.1.6 更新内容:

新增特性

  • 1、带约束的泛型支持(by forsakenyang);

  • 2、非 Unity 的 .net 环境支持;

  • 3、代码注入支持小工具方式,该方式不用拷贝 cecil 库,可以解决拷错 cecil 库版本或者和 Unity,VS 插件冲突的问题;

  • 4、Hotfix 配置支持字段和属性

  • 5、更方便的 Unity 协程 hotfix

  • 6、在 hotfix 触发事件;

  • 7、LuaTable 添加 ForEach 方法以及 Length 属性;

  • 8、cmake 生成项目优化:保留源文件目录结构;

  • 9、对已经 Dispose 的 LuaEnv 的访问做保护;Dispose 时检查 callback 是否已经都释放,没释放的话报错;

  • 10、支持释放 Hotfix 回调;

变更

  • 1、构造函数改为执行原有逻辑后调用 lua;

  • 2、对 string 类型的[]操作符重载会影响到继承调用,去掉该特性的支持;

  • 3、编辑器下的代码注入改为手动方式;

bug 修复

  • 1、防止定义了同时定义 get_xx 方法以及xx属性的生成代码的重名。

  • 2、struct 注入代码无效;

  • 3、Utils 加名字空间,防止和业务冲突;

  • 4、返回定长多维数组的 delegate ,生成代码可能会冲突;

  • 5、interface ,以及编辑器下不生成代码情况下,对可变参数的展开;

  • 6、il2cpp 下,如果不生成代码,会报 ManifestModule 不支持;

  • 7、规避 Unity4 的 bug:访问一个已经被 Distroy 的 UnityEngine.Object ,编辑器下会崩溃,这个问题在 Unity5,或者 luajit 版本都不会出现;

  • 8、修改上个版本引入的问题:xlua_setglobal 会漏一个值在栈上,这会导致一些32位应用不稳定;

  • 9、当 delegate 参数只有 ref 和 out 的区别的话,报重载冲突。

下载地址和版本说明请查看此处

 

查看原文:xLua 2.1.6 发布,腾讯开源的手游热更新解决方案

需要 登录 后回复方可回复, 如果你还没有账号你可以 注册 一个帐号。