NLua(LuaInterface)- 调用函数

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

例如,我现在有:

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

然而,这只是运行脚本。在脚本内部,我有一个自定义函数。我只想运行那个函数。我尝试过:

lua.Call("functionTest")

但那没有用。我该怎么做呢?

我的lua脚本是这样的:

function functionTest()
   someMethod()
end

或者,如果不可能 - 是否有一种方法在一个lua文件中包含不同的脚本?我想能够为脚本使用不同的参数运行相同的文件,例如:

script1 = {
    -- Code
}

script2 = {
    -- Code
}

谢谢。

点赞
用户198353
用户198353

为了在Lua中运行函数,你需要先执行实现函数的脚本(代码块)。

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

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

如果你使用NLua.Lua.LoadFile(它调用lua_load)来编译代码,编译后的代码将被置于堆栈的顶部,需要执行才能“声明”该函数。

最好的方法是使用DoFile()DoFile()会加载和运行函数所在的代码块,函数也会随之“实现”。

要在C#中调用Lua函数,你只需要使用函数名获取全局值即可。

 lua.DoFile("x.lua"); //现在MyFunction已被声明
 LuaFunction myFunction = lua["MyFunction"] as LuaFunction;
 myFunction.Call();

参考:NLuaBox源代码

希望这能帮到你。

2014-07-25 13:58:17