在独立的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(“齐天大圣孙悟空”)
结果如下:[