在独立的Lua 脚本文件内,我们需要访问项目内已经存在的C#脚本,这些C#脚本都是我们之前已经写好的。 也就是说,我们热更新下来的Lua 代码,要能访问已经存在的C#代码。 Lua不仅可以访问我们C#项目中的代码,还可以访问C#官方的类库。 操作步骤: 1.导入luanet.dll,语法格式:require “luanet” 2.获取程序集,语法格式:luanet.load_assembly(“程序集名”) 3.获取类型,语法格式:变量名= luanet.import_type(“程序集名.类名”) C#代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using LuaInterface;

namespace lua_Interaction_C
{
class Program
{
static void Main(string[] args)
{
Lua lua = new Lua();

        lua.DoFile("wjgCode.lua");

        Console.ReadKey();
    }

    static double num = 888.666;
    //加减乘除
    static int JiaFa(int a,int b)       {return a + b;}
    static int JianFa(int a, int b)     {return a -b;}
    static int ChengFa(int a, int b)    {return a \* b;}
    static int ChuFa(int a, int b)      {return a / b;}
}

}

Lua代码:

--导入luanet.dll,语法格式:require “luanet”
require(“luanet”)

–获取程序集,语法格式:luanet.load_assembly(“程序集名”)
luanet.load_assembly(“lua_Interaction_C”)

–获取类型,语法格式:变量名= luanet.import_type(“程序集名.类名”)
vsCode=luanet.import_type(“lua_Interaction_C.Program”)

–调用C#中的代码
print(vsCode.num)

print(vsCode.JiaFa(3,6))
print(vsCode.JianFa(18,6))
print(vsCode.ChengFa(6,6))
print(vsCode.ChuFa(88,22))

–热更新核心逻辑:项目打包完成后,直接修改Lua文件的代码就能修改C#的代码

–获取C#中System程序集
luanet.load_assembly(“System”)

–获取C#中System程序集的Console类
Console=luanet.import_type(“System.Console”)

Console.WriteLine(“齐天大圣孙悟空”)

结果如下:[

](http://www.wjgbaby.com/wp-content/uploads/2017/10/17101401-300x159.png)
](http://www.wjgbaby.com/wp-content/uploads/2017/10/17101401-300x159.png)