首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NLua (LuaInterface) -调用函数

NLua (LuaInterface) -调用函数
EN

Stack Overflow用户
提问于 2014-07-24 15:40:10
回答 1查看 4.3K关注 0票数 2

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

例如,现在我有:

代码语言:javascript
复制
lua.LoadFile("C:\\test.lua")
lua.Call();

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

代码语言:javascript
复制
lua.Call("functionTest")

但这并不管用。我该怎么做呢?

我的lua脚本是这样的:

代码语言:javascript
复制
function functionTest()
   someMethod()
end

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

代码语言:javascript
复制
script1 = {
    -- Code
}

script2 = {
    -- Code
}

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2014-07-25 21:58:18

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

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

代码语言:javascript
复制
 function MyFunction () 
      print ("MyFunction")
 end function

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

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

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

代码语言:javascript
复制
 lua.DoFile ("x.lua"); // Now MyFunction is declared
 LuaFunction myFunction = lua ["MyFunction"] as LuaFunction;
 myFunction.Call ();

参考:NLuaBox Source code

希望这能对你有所帮助。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24927776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档