1

我只是在学习 Lua 并尝试将它与 C# 和单声道(在 Linux 上)集成。环顾四周后,我发现 AluminumLua 作为包装器可以做到这一点。

我已经成功地能够从 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# 获取它的输出结果?

4

1 回答 1

1

从查看源代码来看,LuaContext有一个Get返回 a 的方法LuaObject。参考后,LuaObject您可以尝试将其转换为LuaFunctionusing AsFunctionand 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!");
}
// ...
于 2013-11-14T14:51:24.403 回答