c# - NLua (LuaInterface) - 调用函数

标签 c# lua luainterface nlua

使用 NLua 运行 lua 脚本时如何调用函数(LuaInterface 分支)?

例如,现在我有:

lua.LoadFile("C:\\test.lua")
lua.Call();

但是,这只是运行脚本。在脚本中我有一个自定义函数。我希望能够仅运行该功能。我尝试过:

lua.Call("functionTest")

但这没有用。我怎样才能做到这一点?

我的lua脚本是这样的:

function functionTest()
   someMethod()
end

或者,如果不可能的话 - 有没有一种方法可以在一个 lua 文件中包含不同的脚本?我希望能够使用不同的脚本参数运行同一文件,例如:

script1 = {
    -- Code
}

script2 = {
    -- Code
}

谢谢。

最佳答案

要在 Lua 中运行函数,您需要首先执行实现该函数的脚本( block )。

例如,如果你有一个 block (x.lua)

 function MyFunction () 
      print ("MyFunction")
 end function

如果您使用 NLua.Lua.LoadFile (调用 lua_load ),编译后的代码将位于堆栈顶部,您需要运行来“声明”该函数

最好的方法是使用 DoFile ()DoFile 将加载并运行您的 block ,您的函数现在将被“实现”。

要从 C# 调用 Lua 函数,您所需要做的就是使用函数名称获取全局值。

 lua.DoFile ("x.lua"); // Now MyFunction is declared
 LuaFunction myFunction = lua ["MyFunction"] as LuaFunction;
 myFunction.Call ();

引用:NLuaBox Source code

希望这可以帮助你。

关于c# - NLua (LuaInterface) - 调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24927776/

相关文章:

C# LuaInterface 类运算符

c# - 如何将 WinForm 传递给 Lua (LuaInterface)?

c# - 解析aspx文件中的控件并将其转换为xml

c# - 如何获取 MP4(视频文件)的声音部分?

c# - WPF 和 ListView - 在运行时添加列和项目

lua - luac 生成的字节码可以在没有 Lua 库的电脑上使用吗?

c# - iTextSharp 不呈现自定义乌尔都语字体

algorithm - 填表保存规则

C++ - 从没有自定义 .lib 文件的 Lua C 模块调用 Lua 函数

c# - 从 C# 方法返回一个 Lua 表而不将它添加到全局堆栈