C#调用Lua用 LuaInterface.dll;
Lua调用C#用Luanet.dll;
他们之间的交互主要就是靠这两个库文件,
需要把渣两个文件刚到VS工程下的Debug文件夹下。
using LuaInterface;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LuaDemo_1
{
class Program
{
static void Main(string[] args)
{
Lua lua = new Lua();
//lua["a"] = 123;
//Console.WriteLine(lua["a"]);
//lua.DoFile("Lua_1.lua");//调用Lua脚本
//lua.DoString("array.a()");//调用数组中的函数
//Console .WriteLine( lua["str"]); //调用Lua中的字段
Program p = new Program();
//把一个c#类中的普通方法注册到lua 中
lua.RegisterFunction("NormalMethod", p, p.GetType().GetMethod("NormalMethod"));
lua.DoString("NormalMethod()");
//把一个c#类中的静态方法注册到lua 中
lua.RegisterFunction("StaticMethod", null, typeof(Program).GetMethod("StaticMethod"));
lua.DoString("StaticMethod()");
Console.ReadLine();
}
public void NormalMethod()
{
Console.WriteLine("ok_1");
}
public static void StaticMethod()
{
Console.WriteLine("ok_static");
}
}
}
----------------------------------------------------------------------------
lua调用C#
lua
require("luanet")
luanet.load_assembly("System")--导入dll
int32= luanet.import_type("System.Int32")--引入类型
num=int32.Parse("123")--引入类型后就可以调用该类型的方法
print (num )
然后运行VS 在VS中调用该Lua文件
-------------------------Lua代码--------------
require("luanet")
luanet.load_assembly("System")--导入dll
int32= luanet.import_type("System.Int32")--引入类型
num=int32.Parse("123")--引入类型后就可以调用该类型的方法
print (num )
----------Lua 访问C#中的字段和方法
luanet.load_assembly("testLuaDemo_1")
p=luanet.import_type("testLuaDemo_1.Program")--这块传进来的是一个类
print(p():NormalMethod())--这块是通过类调用方法
p1=p()--这一步至关重要 没有这一步就回报错 (找不到C#中的任何东西)
print (p1.str)
p1:Test_1()