我设置了以下方法来重现我遇到的问题,即从一个 lua 状态通过另一个函数参数传递表会导致表为空。
在这种情况下,该表似乎被解释为一个函数。我不知道为什么。
Lua scope = new Lua();
Lua scope2 = new Lua();
scope2.DoString("t = { Data = 3 }");
scope.DoString("function values(key, model) return key, model end");
var func = (LuaFunction)scope["values"];
var t = (LuaTable)scope2["t"];
object[] results = func.Call("Hello", t);
var tableFunc = results[1] as LuaFunction;
var tableTable = results[1] as LuaTable;
object[] tableFuncResult = tableFunc.Call();
运行此代码段后 tableFuncResult 的值为对象数组 { null, null }。表表为空。相反,tableFunc 应该为 null,而 tableTable 应该包含在 scope2 中定义的表。