跳到主要内容

ZLua DocsAlpha

零配置 · 完备 C# 互操作 · Il2Cpp 上约 2.62× 于 xLua

Mono · 已完成Il2Cpp · 已完成

Unity 2021+ · 团结引擎 · Lua 5.1–5.5 / LuaJIT(Il2Cpp:Android·iOS)

更易用 · 零配置

声明式 GetFunction / [LuaMarshalAs],CSharp 懒加载;无需 per-type C# Wrap 白名单,屏蔽底层 Lua C API。

🚀

更快 · 约 2.62×

Il2Cpp 实测:约 98% 对齐用例快于 xLua;Lua→C# 平均约 2.62×;常见字段 / 属性与调用约 4×。

📦

更小桥接 · 更少 GC

同签名合并的 C++ stub,体积可小一个数量级;引用类型与 struct 默认 0 GC,并提供 OpaqueValue 等策略。

双向调用一览

C# · GetFunction

// Bootstrap.cs
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]
private static void InitZLuaOnStartup()
{
    LuaAppDomain.Initialize(LoadLuaModule);
}

Action AppMain;
Func<int, int, int> AppAdd;

void Awake()
{
    AppMain = LuaAppDomain.GetFunction<Action>("app", "main");
    AppAdd = LuaAppDomain.GetFunction<Func<int, int, int>>("app", "add");
}

Lua · app.lua

-- app.lua
local function main()
    print("lua main start")
end

local function add(a, b)
    return a + b
end

return {
    main = main,
    add = add,
}