luainterface问题

时间:2013-11-16 07:29:25

标签: c# luainterface

我在使用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;

但由于某种原因,我得到null异常。有什么想法吗?

1 个答案:

答案 0 :(得分: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)

当你不再需要这个功能时,记得释放你的LuaFunction,调用Dispose