xlua.dll 是 XLua 方案在 Windows 平台上的原生动态库,通常位于 Unity 项目的 Plugins/x86_64 或 Plugins/x86 目录。它并非普通托管程序集,而是把 Lua 虚拟机、C API、绑定层和平台适配代码封装为可被 C# 通过 P/Invoke 调用的 DLL。理解它的核心功能,有助于定位热更新、脚本加载和跨语言调用中的故障。
1. Lua 运行时宿主:初始化并持有 lua_State,加载 Lua 标准库,管理 Lua 栈、全局表、GC、协程和错误处理,为上层提供可执行的 Lua 环境。
2. 双向互操作桥:通过导出函数连接 C# 与 Lua。C# 侧可执行 Lua 代码、读写全局变量、调用 Lua 函数;Lua 侧可通过 wrapper、trampoline 和生成代码回调 C# 方法。
3. 类型与绑定适配:支持类、结构体、枚举、委托、事件、泛型、重载方法、扩展方法等绑定,降低手写胶水代码成本,并维护对象引用与生命周期。
4. 热补丁与热更新:配合 XLua 的 Hotfix 机制,将 C# 方法替换或注入为 Lua 实现,使已发布程序在不重新安装的情况下修复逻辑、调整配置或更新活动内容。