xLua Unity3D 下 Lua 编程解决方案

开源网站开源项目 24-04-06 13:25:00

Unity3D下Lua编程支持

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

xLua的突破

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

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

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

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

更详细的特性、平台支持介绍请看这里。

安装

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

如果希望安装到其它目录,请看FAQ相关介绍。

快速入门

一个完整的例子仅需3行代码:

下载xLua后解压到Unity工程Assets目录下,建一个MonoBehaviour拖到场景,在Start加入如下代码:

Lua.LuaEnvluaenv=newXLua.LuaEnv();luaenv.DoString("CS.UnityEngine.Debug.Log('helloworld')");luaenv.Dispose();

1、DoString参数为string,可输入任意合法的Lua代码,本示例在lua里调用C#的UnityEngine.Debug.Log打印了个日志。

2、一个LuaEnv实例对应Lua虚拟机,出于开销的考虑,建议全局唯一。

C#主动调用lua也很简单,比如要调用lua的系统函数,推荐方式是:

声明

[XLua.CSharpCallLua]publicdelegatedoubleLuaMax(doublea,doubleb);

绑定

varmax=luaenv.Global.GetInPath<LuaMax>("math.max");

调用

Debug.Log("max:"+max(32,12));

建议绑定一次,重复使用。生成了代码的话,调用max是不产生gc alloc的。

热补丁

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

开发只用C#;

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

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

如果你仅仅希望用热更新来fix bug,这是强烈建议的做法。这里是使用指南。

[xLua Unity3D 下 Lua 编程解决方案]相关推荐

LinPhone IP 电话工具

Linphone 是一个开源的 SIP 电话,用于语音/视频通话和即时通讯,并可用于移动和桌面环境(iOS、Android……...

Lobe Chat开源聊天机器人框架

Lobe Chat开源聊天机器人框架

Lobe Chat 是一款开源的聊天机器人框架,支持语音合成、多模态和可扩展插件系统。其特色包括视觉识别、……...

Thonny 适合初学者的 Python IDE

Thonny 适合初学者的 Python IDE

Thonny —— 一个面向初学者的 Python IDE Thonny 由爱沙尼亚的 Tartu 大学开发,它采用了不同的方法,因为……...

Texture iOS 异步渲染 UI 框架

Texture 是异步渲染 UI 框架,该库的设计思想对很多 UI 框架产生了影响,封装动态化框架如果想要异步渲染……...

ngrok Web服务安全通道

ngrok Web服务安全通道

ngrok 是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道。ngrok 可捕获……...

今日开源
  1. pixels 支持硬件加速的像素帧缓冲区

    pixels 支持硬件加速的像素帧缓冲区

    pixels 是一个小型的硬件加速像素帧缓冲区。 特性 构建于现代图形 API wgpu的基础上:Vulkan、Metal、DirectX 12、OpenGL ES3 对 DirectX 11、WebGL2 和 WebGPU 的支持正在进行中 可使用自己的自定义着色器来获得……

    开源软件 2024-04-25

  2. Tingle JS 模块插件

    Tingle JS 模块插件

    Tingle 是采用原生JS编写的模块插件。主要具有以下特性: 无需其他依赖包 可以通过CSS完全自定义 CSS过渡效果 简单的API 没有多余的文件需要下载 较好的用户体验

    开源软件 2024-04-25

  3. Jetty Servlet 容器

    Jetty是一个轻量级的高度可扩展的基于java的web服务器和servlet引擎。其目标是以大批量低延迟的方式支持HTTP、HTTP/2和WebSocket等Web协议,在提供最大性能的同时,保留多年servlet开发的易用性和兼容性。Jetty是……

    开源软件 2024-04-25

返回顶部小火箭