Skip to main content

Supported versions & platforms

Lua engines

VersionMono (Editor)Il2Cpp (Player)Notes
Lua 5.1.xOptional in Settings (e.g. lua-5.1.5); no VM FastMT patch
Lua 5.2.xOptional in Settings (e.g. lua-5.2.4); no VM FastMT patch
Lua 5.3.xOptional in Settings; default is lua-5.5.0
Lua 5.4.xOptional in Settings
Lua 5.5.xOptional in Settings
LuaJIT⚠️Available in Editor (Mono); Il2Cpp Player only Android / iOS (bring your own static libs — see LuaJIT build)
Luau🔜🔜Planned

PUC-Rio patch versions use Settings luaVersionId (lua-X.Y.Z); LuaJIT uses luajit-M.N (you must clone sources). Install loads them into the local tree. See Installation, Multi-version.

Unity

VersionStatus
Unity 6000.0.x✅ Supported
Unity 6000.3.x✅ Supported
Unity 6000.5.x✅ Supported
Unity 2022.3 LTS✅ Supported
Unity 2021.3 LTS✅ Supported
Tuanjie Engine LTS✅ Supported

libil2cpp patch resolution: prefer patches/libil2cpp/6000.{minor}/, then fall back to 6000/ (see Multi-version).

Scripting Backend

BackendEnvironmentFeature status
Il2CppPlayer shippingDone (authoritative implementation)
MonoUnity EditorDone (Lua-visible semantics match Il2Cpp)

Lua-visible semantics match on both ends; Indexer / bridge implementations differ. See Project status, Spec.

Il2Cpp builds: before shipping, run ZLua/Generate/All (C++ stubs, not C# Wrap).

Target platforms (Il2Cpp)

EngineIl2Cpp Player platforms
PUC-Rio (Lua 5.1–5.5)Designed for common Il2Cpp targets (Windows, macOS, iOS, Android, WebGL, WeChat mini games, HarmonyOS / vehicle, etc.)
LuaJITAndroid and iOS only; Win / macOS / Linux / WebGL etc. unsupported. Build static .a into Plugins yourself — see LuaJIT build

For other platform issues, please file an Issue.


Feature × runtime matrix

✅ Available · ⚠️ Limited (see notes) · ❌ Unsupported (intentional). Details follow the Spec.

Lua calling C#

FeatureMonoIl2CppNotes
class / struct accessLazy bind; no C# Wrap whitelist
Instance / static fields
Instance / static methods
Property (no args)
Property (indexer)Via method forms get_Item / set_Item; see Fields & properties
Method overload dispatch
[LuaAlias] / register_method
Generic class / methodOpen generics must be closed first; static generic methods have limits
Array (szarray / mdarray)mdarray cannot be table-serialized
Event-specific metatableUse ordinary add_ / remove_ methods
Delegate / Lua callbacksLua→C# byref params have limits

C# calling Lua

FeatureMonoIl2Cpp
GetFunction<T>
Multi-arg / multi-return
[LuaMarshalAs]

Marshal

TypeMonoIl2Cpp
Primitives / string
enum (default integer)
class / struct (ByVal / ByObj / Opaque)
array
OpaqueValue / byref

Standard library zlua

APIMonoIl2Cpp
typeof / get_type_from_name / make_generic_*
szarray / mdarray factories
opaque get/set, box/unbox
register_method
GoalRecommended
Feature work, script iterationEditor (Mono)
Shipping & performanceIl2Cpp Player + Generate
Semantic disputesFollow the spec

Next steps