Back to rankings

Tencent/xLua

C

xLua is a lua programming solution for C# ( Unity, .Net, Mono) , it supports android, ios, windows, linux, osx, etc.

luaunityunity3dcsharpxlua
Star Growth
Stars
10.1k
Forks
2.5k
Weekly Growth
Issues
278
5k10k
Jan 2017Mar 2020May 2023Jul 2026
README

license release PRs Welcome Build status

(English Documents Available)

C# 下 Lua 编程支持

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


xLua 的突破

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

  • 可以运行时把 C# 实现(方法,操作符,属性,事件等等)替换成 Lua 实现;
  • 出色的 GC 优化,自定义 struct,枚举在 Lua 和 C# 间传递无 C# GC Alloc;
  • 编辑器下无需生成代码,开发更轻量;

更详细的特性、平台支持介绍请参考 xLua 文档: 功能特性


安装

xLua 可以直接简单的安装在 Unity 项目中.

  1. Releases 中下载发行版, 或直接下载本仓库代码.
  2. 打开下载下来的源码压缩包, 你会看到一个 Assets 目录, 这目录就对应 Unity 工程的 Assets 目录,保持这目录结构, 将其内容置入 Unity 项目即可.

注意, Assets/Examples 目录下为示例代码, 你应该在生产环境下删去他们.

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


文档


快速入门

一个完整的例子仅需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]
    public delegate double LuaMax(double a, double b);
    
  • 绑定

    var max = luaEnv.Global.GetInPath<LuaMax>("math.max");
    
  • 调用

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

注意, 请不要重复调用 luaEnv.Global.GetInPath<LuaMax>, 这没有任何必要.


热补丁

除了使用 Lua 在 Unity 进行脚本编写, 你也可以使用 Lua 实现 "热补丁". xLua 提供了使用 Lua 逻辑替换 C# 方法逻辑的方案.

  • 侵入性小,老项目原有代码不做任何调整就可使用。
  • 运行时影响小,不打补丁基本和原有程序一样。
  • 出问题了可以用 Lua 来打补丁,这时才会走到 Lua 代码逻辑;

参考使用指南: xLua 文档: 热补丁


更多示例


技术支持

一群:612705778 (已满)

二群:703073338 (已满)

三群:811246782

入群的问题:有问题该先从哪找答案

回答:FAQ

平时也要谨记这答案,90%以上问题都可以在FAQ里头找到答案。这些问题就别在群刷屏了。

Related repositories
neovim/neovim

Vim-fork focused on extensibility and usability

Vim ScriptOtherneovimc
neovim.io
101.3k7k
coolsnowwolf/lede

Lean's LEDE source

COtherledelua
31.5k19.2k
NvChad/NvChad

Blazing fast Neovim framework providing solid defaults and a beautiful UI, enhancing your neovim experience.

LuaGNU General Public License v3.0nvimneovim
nvchad.com
28.4k2.2k
nvim-telescope/telescope.nvim

Find, Filter, Preview, Pick. All lua, all the time.

LuaMIT Licenseneovimlua
19.6k956
LunarVim/LunarVim

🌙 LunarVim is an IDE layer for Neovim. Completely free and community driven.

LuaGNU General Public License v3.0neovimvim
lunarvim.org
19.3k1.5k
cocos2d/cocos2d-x

Cocos2d-x is a suite of open-source, cross-platform, game-development tools utilized by millions of developers across the globe. Its core has evolved to serve as the foundation for Cocos Creator 1.x & 2.x.

C++cocos2dcocos2d-x
cocos.com/en/cocos2d-x
19.1k7.1k
Hammerspoon/hammerspoon

Staggeringly powerful macOS desktop automation with Lua

Objective-CMIT Licensemacosobjective-c
hammerspoon.org
15.8k699
AstroNvim/AstroNvim

AstroNvim is an aesthetic and feature-rich neovim config that is extensible and easy to use with a great set of plugins

LuaGNU General Public License v3.0vimlua
astronvim.com
14.4k954
spotify/annoy

Approximate Nearest Neighbors in C++/Python optimized for memory usage and loading/saving to disk

C++Apache License 2.0c-plus-pluspython
14.3k1.2k
dense-analysis/ale

Check syntax in Vim/Neovim asynchronously and fix files, with Language Server Protocol (LSP) support

Vim ScriptBSD 2-Clause "Simplified" Licenselintervim
14k1.5k
luanti-org/luanti

Luanti (formerly Minetest) is an open source voxel game-creation platform with easy modding and game creation

C++Otherc-plus-plusvoxel
luanti.org
13.3k2.4k
nmap/nmap

Nmap - the Network Mapper. Github mirror of official SVN repository.

COtherc-plus-pluslua
svn.nmap.org
13.2k2.9k