找回密码
 立即注册
查看: 287|回复: 0

xLua 简介

[复制链接]
发表于 2021-8-15 14:10 | 显示全部楼层 |阅读模式
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的。
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-24 11:48 , Processed in 0.159230 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表