我正在学习Lua并尝试将其与C#和mono(在Linux上)集成。经过一番环顾,我发现AluminiumLua是这样做的包装纸。
我已成功地从lua调用C#,但我看不到从C#调用lua的方式:
lua(test.lua):
HelloWorld()
function print_test()
print("hi")
return 1
end
C#
var context = new LuaContext ();
context.AddBasicLibrary ();
context.AddIoLibrary ();
context.SetGlobal ("HelloWorld", LuaObject.FromDelegate(new Action(HelloWorld)));
var parser = new LuaParser (context, "test.lua");
parser.Parse ();
...
public static void HelloWorld() {
Console.Write("HelloWorld");
}
这很酷,但是......如何调用函数“print_test”,从C#获取其输出结果?
答案 0 :(得分:1)
通过查看来源,LuaContext
有一个Get
方法,返回LuaObject
。在您引用LuaObject
之后,您可以尝试使用LuaFunction
和AsFunction
将其转换为IsFunction
。
有些事情应该有效:
// ...
var print_test = context.Get("print_test");
if (print_test.IsFunction)
{
print_test.AsFunction()(null);
}
else
{
Console.Write("print_test not a lua function!");
}
// ...