跳到主要内容

调用路径概览

:::tip 谁该读本文 已了解 设计概览,需要快速对照「一次调用经过哪些层」的读者。 Il2Cpp C++ 细节见 Il2Cpp 架构;Mono 优化见 性能报告。 :::

C# → Lua([LuaInvoke]

阶段Mono (Editor)Il2Cpp (Player)
入口dnlib 注入 RunLuaFuncInternalCall → C++ 模板
模块require + package.loaded同语义
MarshalC# 快速 Push/PopC++ 生成代码

Lua → C#(CSharp 成员访问)

阶段MonoIl2Cpp
首次访问EnsureBinding 反射注册三表Codegen 预生成(MVP 子集)
调用Expression 编译桥 / dispatchC++ methodPointer(目标)
字段读getter closure 或 inlineoffset 直读(目标)

与 xLua 路径对照(简化)

步骤xLua(CodeEmit 档)ZLua
类型入口生成 Wrap 表 / delay loaderCSharp 懒加载
成员查找Wrap __index 组合表三表 strict miss
C#→LuaDelegateBridge / DoString[LuaInvoke]
Player生成 Wrap 或 ILC++ 直桥(设计目标)

详见 与 xLua 对比

相关文档