目录
写在前面
本文参考b站教程《lua热更新技术》
C#(CLR)与Lua相互调用
- LuaInterface包括两个核心库一个是LuaInterface.dll,一个是Luanet.dll,我们可以通过LuaInterface完成Lua和c#之间的互相调用
- 因为官网的包没有Luanet,这里用的是luainterface-1.5.3,然后把压缩包里的两个dll文件LuaInterface.dl和Luanet.dlll拖进工程的“引用”里(注意一定要放在项目文件夹下的…/bin/Debug/,不然会报错),之后把"LuaInterface.dll"添加进引用中
实践
在C#中的第一串Lua代码
Lua lua = new Lua(); //创建Lua的解释器(构造函数)
lua["num"] = 34; //定义一个num
lua["str"] = "a string"; //定义一个字符串
lua.NewTable("tab"); //创建一个表
Console.WriteLine(lua["num"]);
Console.WriteLine(lua["str"]);
Console.WriteLine(lua["tab"]);
Console.ReadKey();
在C#中执行Lua脚本文件/脚本字符串
在热更新中,只需要写好解析lua脚本的代码,然后C#代码不需要变动,只需要修改lua脚本就好,通过lua脚本控制游戏逻辑。
- lua.DoString(" Lua的代码 "); //执行一段Lua的代码
- lua.DoFile(“mylua.lua”); //执行lua脚本
PS:Lua的脚本要在SciTE(LuaforWindow)中写,然后把lua文件放在项目的项目文件夹下的…/bin/Debug/下
//因为位于同样的Lua解析器环境当中,所以可以访问得到这些变量
lua.DoString("num=2"); //执行一段lua代码
lua.DoString("str= 'a string' ");
object[] values = lua.DoString("return num,str"); //返回一个字符串
foreach (object obj in values