Ejemplo n.º 1
0
        //如果不出错,则保留返回值在堆栈上
        //如果出错,压入调用堆栈信息,抛出异常
        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);
            }
        }