使用 Lua 获取 C++ 中的表格引用索引指南

首先,为这个奇怪的标题道歉:( 我正在使用 Lua 作为我的游戏脚本语言,我有一个问题: 我正在创建 Lua 表格实例并将它们存储在“ref_idx”索引中,就像这样:

lua_newtable(L);
lua_getglobal(L, "TestTable"); // 创建表格实例"TestTable"
lua_pcall(L, 0, 1, 0);
ref_idx = luaL_ref(L, LUA_REGISTRYINDEX);

当我想调用其中一个方法时,我会使用:

lua_rawgeti(L, LUA_REGISTRYINDEX, ref_idx);
lua_getfield(L, -1, "testMethod");
lua_pushvalue(L, -2);
lua_pcall(L, 1, 0, 0));
lua_pop(L, 0);

使用完引用后,我会这样做:

luaL_unref(L, LUA_REGISTRYINDEX, ref_idx);

一切正常,但问题是我想直接在 Lua 中使用这些引用,就像这样:

function onUpdate()
   local ref = GetReferenceFromC++() -- 返回 ref_idx
   ref:testMethod()
end

有什么帮助或者实现方法吗? (对不起我的英语,我正在努力改进)

点赞
用户12540214
用户12540214

我使用了debug.getregistry()[ref]:testMethod()并且它起作用了,感谢@EgorSkriptunoff的快速回复。

2020-11-29 16:38:52