//如果不出错,则保留返回值在堆栈上 //如果出错,压入调用堆栈信息,抛出异常 public void Call(int nArgs) { //为提高效率,调用一次LuaDLL搞定 /* * int oldTop = LuaDLL.lua_gettop(L) - nArgs - 1; * LuaDLL.lua_rawgeti(L, LuaIndexes.LUA_REGISTRYINDEX, errorFuncRef); * LuaDLL.lua_insert(L, oldTop + 1); * if (LuaDLL.lua_pcall(L, nArgs, 0, oldTop + 1) == 0) * { * LuaDLL.lua_remove(L, oldTop + 1); //pop errorFunc * } * else * { * LuaDLL.lua_remove(L, oldTop + 1); //pop errorFunc * Debug.LogError(LuaDLL.lua_tostring(L, -1)); * LuaDLL.lua_pop(L, 1); * } */ string err = LuaDLL.Unity_Lua_Call(L, nArgs, LuaIndexes.LUA_REGISTRYINDEX, errorFuncRef); if (err != null) { Common.HobaDebuger.LogError(err); } }