public static List <T> GetList <T>(this IntPtr L, int index, Func <IntPtr, int, T> getor) { var result = new List <T>(); var size = Lua.lua_objlen(L, index); for (int i = 1; i <= size; i++) { int _lastTopIndex = Lua.lua_gettop(L); Lua.lua_rawgeti(L, index, i); var value = getor(L, -1); Lua.lua_settop(L, _lastTopIndex); result.Add(value); } return(result); }