跳到主要内容

术语表(GLOSSARY)

规范性术语以本表为准;实现细节见「实现落点」列。

核心架构

术语含义实现落点
ZLuaUnity 下 C# 与 Lua 5.4 互操作框架;Editor 用 Mono,Player 用 Il2CppPackages/com.code-philosophy.zlua
Lua 可见语义脚本侧可观察的行为契约;Mono 与 Il2Cpp 必须一致spec/**
双运行时ZLua.Mono(Editor)+ ZLua.Il2Cpp(Player);门面 LuaAppDomainspec/00-OVERVIEW.md
libil2cpp/zluaPlayer 侧 native 实现根目录build-win64/.../libil2cpp/zlua
L/InvokeC#→Lua 调用模型,类比 P/Invoke[LuaInvoke]
MethodBridgeLua→C# 方法桥;Il2Cpp 按 ReducedType 复用 stub;Mono 每成员 Emitimpl/codegen/

类型与命名

术语含义实现落点
CSharp 根表全局表;__index 懒加载程序集 → 类型spec/02-TYPE-SYSTEM.md §2
类型表(typeTable)CSharp[assembly][typeFullName] 解析得到的静态门面 table§3.1
typeFullNameCLR 全名;namespace 用 .;嵌套类型用 +§2.3
typeArgzlua API 中描述 C# 类型的实参:类型表 / zlua.types.* / mscorlib 字符串spec/05-LIB.md §3
门面(view)userdata 对外暴露的声明类型;可与运行时具体类型不同spec/marshal/06-CLASS.md
__typeid闭合泛型、数组等无法仅凭字符串反查的类型 idTypeRegistry
Intern相同 make_*_type 实参多次调用返回同一类型表TypeRegistry

元表与索引

术语含义实现落点
SMTStatic Metatable:类型表上的静态元表spec/metatable/01-LAYOUT.md
IMTInstance Metatable:实例 userdata 元表同上
三表 indexermethodTable / fieldGetterTable / fieldSetterTable 分派(Mono)spec/metatable/02-INDEX.md
Il2Cpp native indexerDispatch* C closure + NameMetaMapMetaBinding / TypeRegistryimpl/metatable/INDEXER-IL2CPP.md
__index miss未注册成员 → 返回 nil(禁止反射 fallback)spec/metatable/02-INDEX.md
__newindex miss未注册 / 不可写成员 → error同上
Bind 期扁平化继承链 public 成员在 EnsureBinding 时写入当前类型三表;运行时向上查找spec/02-TYPE-SYSTEM.md §5
dispatch closure多重重载时默认方法名绑定的运行时分派闭包spec/04-METHOD-OVERLOAD.md
direct method closure单重重载或别名绑定的桥接闭包;可 register_method / make_generic_methodMetaBinding

编组形态

术语含义实现落点
ByVal值类型 payload userdata(struct 拷贝语义)spec/marshal/05-STRUCT.md
ByObj托管引用 / boxed 值经 ObjectRegistry 的 userdataspec/marshal/06-CLASS.md
OpaqueValue无 metatable 的临时 lightuserdata(ref/in/out 或显式标注)spec/marshal/04-OPAQUE.md
StructHandlestruct 在 C#→Lua 默认路径上的 opaque lightuserdata(同步调用链内有效)同上 + struct 分册
ReducedTypeIl2Cpp 桥接按简化签名复用 stub 的键;Mono 不做此复用impl/codegen/
ConversionKind重载分派用的 C# 隐式转换类别spec/04-METHOD-OVERLOAD.md §3.6

Registry 与生命周期

术语含义实现落点
ObjectRegistryByObj userdata 槽位 + (identity, view) 弱缓存 + GC rootspec/10-LIFETIME.md
StructRegistrynon-blittable struct userdata 拷贝与 GC 扫描(Il2Cpp:NotBlittableStructRegistry同上
OpaqueParameterScopeC# 调 Lua 期间 opaque handle 的 generation 域OpaqueValueMarshal
lua_State宿主默认单主状态;跨线程须遵循帧泵 / 同步规则§10 §4

宿主 API

术语含义实现落点
[LuaInvoke]标记 static extern C#→Lua 入口;Editor Weaver 注入桥;Player InternalCallspec/01-HOST-API.md
[LuaMarshalAs]参数 / 返回值 / 字段 / 属性的编组标注spec/marshal/02-MARSHAL-AS.md
[LuaAlias]为方法追加最终 Lua 名;可与默认名/其它别名重复,按名分组进 overloadspec/04-METHOD-OVERLOAD.md §5
Weaver编译后 IL 改写(dnlib);LuaInvoke / Mono 引用导入impl/codegen/WEAVER.md

明确不支持(rewrite 规则)

术语含义
Event 专用元表 { get, set, fire } 子表;使用 add_EventName / remove_EventName 普通方法
RunLuaFunc(object[])旧 Editor 慢路径;新实现使用 per-signature Emit / stub,文档化
运行时继承 promotion实例成员 不在 __index miss 时沿链查找并缓存;改为 Bind 期扁平化

文档缩写

缩写路径
SPECDocs/spec/**
IMPLDocs/impl/**
MTDocs/spec/metatable/**
MARDocs/spec/marshal/**