我在使用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异常。有什么想法吗?
答案 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
。