1.1 下载LuaInterface
下载地址:http://files.luaforge.net/releases/luainterface/luainterface
1.2.解压下载好的压缩包,将luanet.dll文件拷贝进工程目录下bin/Debug文件夹下,把LuaInterface.dll复制到工程目录下,然后 添加引用LuaInterface.dll
2.编写lua文件(编码格式应为ANSI),即用记事本编辑,名称为aaa.lua,保存后缀为.lua,保存在工程bin/Debug文件夹下
require "luanet"
--加载C#命名空间
luanet.load_assembly("System")
--导入C#命名空间中的类,得到命名空间System中的Int32类的对象
Int32=luanet.import_type("System.Int32")
在Lua中使用C#中的类创建对象的时候,会自动匹配最合适的构造方法
3.在vs下调用lua脚本,需要引入命名空间using LuaInterface
Lua lua = new Lua();
lua.DoFile("aaa.lua");
Console.ReadKey();
在Lua中访问C#自定义的类中的属性和方法
C#文件
namespace test
{
class Program
{
public string name = "wang";
public void TestMethod()
{
Console.WriteLine("TestMethod");
}
static void Main(string[] args)
{
Lua lua = new Lua();
lua.DoFile("aaa.lua");
Console.ReadKey();
}
}
}
lua文件
require "luanet"
--加载C#命名空间
luanet.load_assembly("test")
--导入C#命名空间中的类
Program=luanet.import_type("test.Program")
program1 = Program()
--打印C#中Program的字段
print(program1.name)
--调用C#中Program的方法
program1:TestMethod()
特殊情况——out、ref关键字
C#脚本
namespace test
{
class Program
{
public void TestOut(string name, out int count)
{
Console.WriteLine(name);
count = name.Length;
}
public void TestRef(string name,ref int count)
{
Console.WriteLine(name);
Console.WriteLine(count);
count=name.Length;
}
static void Main(string[] args)
{
Lua lua = new Lua();
lua.DoFile("aaa.lua");
Console.ReadKey();
}
}
}
lua脚本
require "luanet"
--加载C#命名空间
luanet.load_assembly("test")
--导入C#命名空间中的类
Program=luanet.import_type("test.Program")
program1 = Program()
--首先返回函数类型,接着返回out(out是个表)
void,strLength = program1:TestOut("wang.com")
print(void,strLength)
--别忘了ref需要赋初值 ref返回的也是table表
void,count=program1:TestRef("wang",10)
print(void,count)