系统:WinAll 大小:3M
类型:编程软件 更新:2017-03-03
开源手游热更系统xLua最新2.1.6版是Unity3D下Lua编程解决方案,自2016年初推广以来,已经应用于十多款腾讯自研游戏,因其良好性能、易用性、扩展性而广受好评。现在,腾讯已经将xLua开源到GitHub。
Unity 下 Lua 编程支持
xLua 为 Unity 增加 Lua 脚本编程的能力,进而提供代码逻辑增量更新的可能。当然不仅仅如此,在 coco2dx 上的实践告诉我们,以 Lua 为主打语言的游戏客户端编程是可行的。
C# 下 Lua 编程支持
xLua 也支持非 Unity 下的 C# 环境使用,通用版本的介绍请看这里。
xLua 的突破
xLua 在功能、性能、易用性都有不少突破,这几方面分别最具代表性的是:
Unity 全平台热补丁技术,可以运行时把 C# 实现(方法,操作符,属性,事件,构造函数,析构函数,支持泛化)替换成 lua 实现;
自定义 struct,枚举在 Lua 和 C# 间传递无 C# gc alloc;
编辑器下无需生成代码,开发更轻量;
新增特性
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 的区别的话,报重载冲突。