使用 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 ();
希望这可以帮助你。
关于c# - NLua (LuaInterface) - 调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24927776/