您的位置:首页 > 编程语言 > Lua

xLua 简介

2017-09-09 08:21 253 查看
C#下Lua编程支持

xLua为Unity、 .Net、 Mono等C#环境增加Lua脚本编程的能力,借助xLua,这些Lua代码可以方便的和C#相互调用。

Unity3D 下Lua编程支持

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

xLua的突破:点击查看详情

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

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

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

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

安装:

直接解压到Assets下可用,第一次建议把例子包也安装,运行看看效果,,,

Lua5.3 vs Luajit
xLua有连个版本,分别集成了,Lua5.3和Luajit,一个想不只能选择其一,这两个版本C#代码是一样的,不同的是Plugins部分
Lua5.3的特性更肺腑下,比如支持原生64位整数,支持苹果干bitcode,支持utf8等,出现问题是因为纯c代码,也好定位。比起Luajit。lua对安装包的影响也更小,
而luajet胜在性能,如果其jit不出现问题的话,可以比Lua高一个数量积,目前Luajit坐直不打算维护Luajit,已经在找人接替其维护,所有其前途堪然,,

热补丁
xLua支持热补丁,这意味着你可以:

开发只用C#;

运行也是C#,性能可以秒杀Lua

处理问题采用Lua改掉C#的出问题部位,下次整体更新是换回正确的C#,能做到用户不用重启程序fix bug;

快速入门

一个完整的例子仅需3行代码:
安装好xLua,建一个MonoBehaviour拖到场景,在Start加入如下代码:
XLua.LuaEnv luaenv = new XLua.LuaEnv();luaenv.DoString("CS.UnityEngine.Debug.Log('hello
world')");luaenv.Dispose();
1、DoString参数为string,可输入任意合法的Lua代码,本示例在lua里调用C#的UnityEngine.Debug.Log打印了个日志。
2、一个LuaEnv实例对应Lua虚拟机,出于开销的考虑,建议全局唯一。
C#主动调用lua也很简单,比如要调用lua的系统函数,推荐方式是:
声明
[XLua.CSharpCallLua]publicdelegatedouble LuaMax(doublea, doubleb);
绑定
varmax =luaenv.Global.GetInPath<LuaMax>("math.max");
调用
Debug.Log("max:" +max(32,12));

建议绑定一次,重复使用。生成了代码的话,调用max是不产生gc alloc的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: