using LuaInterface; //记得引用 LuaInterface.DLL到工程中
namespace WindowsApplication2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
class testclass //这个类用来存放要开放给LUA的函数
{
public void ShowMessage(string s)
{
MessageBox.Show(s);
}
}
private void button1_Click(object sender, EventArgs e)
{
Lua lua = new Lua();
testclass a1 = new testclass();
lua.RegisterFunction("ShowMessage", a1, a1.GetType().GetMethod("ShowMessage")); //注册函数给LUA
try
{
object[] obj = new object[2]; //先申请对象
//LUA中调用 C#的函数
lua.DoString(“ value = 0 /nfunction add(a,b)/n return a+b,a*b /n end /n value = add(1,2) /nShowMessage(value)”);
// 执行脚本,显示计算结果3
//C#中调用 LUA的函数
LuaFunction add=(LuaFunction)lua.GetFunction("add");
if(add != null) //由于从脚本中获取函数,有可能获取不到,所以这里要做容错
obj = add.Call(new object[] {2,3});
//这个时候 obj[0] 就等于5,obj[1] 就等于6 函数返回多个值
Double val=lua.GetNumber("value"); //获取脚本中的变量值
}
finally
{
ShowMessage("执行完成");
}
}
}
}