0

我对 C# luainterface 库有一些问题:

1.所以我加载一个脚本并像这样提取它的功能:

LuaFunction function = lua.GetFunction("Update"); 

但是,如果我加载两个包含同名函数的不同脚本会怎样。如何从script1和script2中提取两个同名的不同函数?

2.如果我将函数加载到内存中,是否可以处理一个特定的函数,而不是所有函数?

3.当我使用 Lua.DoFile 方法时,我想从文件中执行特定的功能。任何想法如何做到这一点?

编辑

2.我发现,我可以做这样的事情

string f = @"
        function hh()
          end";

        var result = lua.DoString(f)[0] as LuaFunction;

但由于某种原因,我得到空异常。任何想法为什么?

4

1 回答 1

0

DoString 将返回您的脚本返回的内容。

lua.DoString ("return 10+10")[0]; // <-- will return Double. 20

如果你想把你的 Lua 函数作为 LuaFunction 对象,你需要返回你的函数,或者甚至更好地使用 [] 运算符来获取 hh 的全局值。

lua.DoString ("function hh() end");
var hh = lua["hh"] as LuaFunction;
hh.Call ();

这是一个示例: https ://github.com/codefoco/NLuaBox/blob/master/NLuaBox/AppDelegate.cs#L46 (但使用 NLua 而不是 LuaInterface)

Dispose当你不再需要这个函数时,记得释放你的 LuaFunction 调用。

于 2013-11-16T16:00:18.377 回答