2

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

例如,现在我有:

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

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

lua.Call("functionTest")

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

我的 lua 脚本是这样的:

function functionTest()
   someMethod()
end

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

script1 = {
    -- Code
}

script2 = {
    -- Code
}

谢谢。

4

1 回答 1

2

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

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

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

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

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

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

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

参考:NLuaBox 源码

希望这可以帮到你。

于 2014-07-25T13:58:17.777 回答