在使用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
}谢谢。
发布于 2014-07-25 21:58:18
要在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 ();希望这能对你有所帮助。
https://stackoverflow.com/questions/24927776
复制相似问题