【问题标题】:How to call Lua Functions with AluminumLua in C#?如何在 C# 中使用 AluminumLua 调用 Lua 函数?
【发布时间】:2013-11-27 13:06:54
【问题描述】:

我只是在学习 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# 中获取其输出结果?

【问题讨论】:

    标签: c# .net lua aluminumlua


    【解决方案1】:

    从源代码来看,LuaContext 有一个Get 方法,它返回一个LuaObject。在您引用了 LuaObject 之后,您可以尝试使用 AsFunctionIsFunction 将其转换为 LuaFunction

    类似的东西应该可以工作:

    // ...
    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-10-29
      • 2015-07-14
      • 2021-04-15
      • 2011-02-19
      • 1970-01-01
      • 2015-02-12
      • 1970-01-01
      • 2014-09-01
      相关资源
      最近更新 更多