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("執行完成");
}
}
}
}