XLua 是腾讯开发分享出来的一个开源项目,主要用于Unity 项目的热更新。 Github地址:https://github.com/Tencent/xLua

一.XLua 资源结构

1.Assets 资源 Plugins:XLua 在各个平台运行需要使用到的dll 库文件; XLua:XLua 核心文件夹; ___Doc:教程文档; ___Examples:XLua 官方自带示例工程; ___Resources:资源文件夹; ___Scr:XLua 源码; ___Tutorial:教程示例场景 [

](http://www.wjgbaby.com/wp-content/uploads/2018/01/18012803-300x113.png)
](http://www.wjgbaby.com/wp-content/uploads/2018/01/18012803-300x113.png)
2.其他资源 build:支持库文件的源码; docs:文档; General:是Tools 工具的源码; Test:测试工程; Tools:工具; WebGLPlugins:webGL 支持库源码; 上面介绍的资源结构是XLua 完整版所有的资源结构; 黑色加粗标示出来的是开发版具备的资源; 项目中使用XLua 只需要将Plugins 和XLua 两个文件夹拷贝到U3D 中即可。

二.XLua 对比ULua

1.组成部分对比 ULua:SimpleFramework > ULua > Lua XLua:XLua > Lua SF:Lua 框架,C#框架,资源的下载更新 2.XLua 的“不足” XLua 只是核心,用于实现Lua 和C#的交互,但是并没有提供便捷的“框架”,也就意味着我们在项目中使用XLua 的话,就需要自己实现框架部分,这样才能实现“从服务器端下载AB 和Lua 资源,完成客户端的热更新”。

三.C#调用Lua

1.C#代码内执行Lua 代码

LuaEnv luaEnv = new LuaEnv();
luaEnv.DoString(“print(‘mkcode’)”);

注意事项: ①需要引入XLua 的命名空间:using XLua; ②在XLua 中,运行Lua 代码的虚拟机是LuaEnv; ③一个LuaEnv 实例就是一个Lua 虚拟机,出于开销的考虑,建议全局唯一。 2.C#调用外部的Lua 代码文件 ①在Resources 文件夹下创建一个lua 文件,文件的后缀是txt; XLua 中完整的Lua 文件名格式如下:fileName.lua.txt。 ②然后在C#代码中用Lua 虚拟机的DoString 方法加载执行该lua 文件;

luaEnv.DoString(“require ‘fileName’”);

3.C#获取Lua 代码中的数据

luaEnv.Global.Get(“a”); //获取lua 中数值.
luaEnv.Global.Get(“b”); //获取lua 中字符串.
luaEnv.Global.Get(“c”); //获取lua 中布尔.
luaEnv.Global.Get(“D”); //获取lua 中方法.

四.Lua 调用C#

CS.UnityEngine.GameObject //获取C#中的类.
CS.UnityEngine.Debug.Log() //获取C#中的方法.
CS.UnityEngine.GameObject.Find() //获取C#中的方法.

注意事项: Lua 调用C#,需要在C#的命名空间之前要加前缀:“CS.”。