如何用 Lua 从嵌套表中取值?

我正在为一个游戏引擎编写材质系统,在这个系统中,Lua 脚本就相当于配置文件。

我在表中存储值,对于矢量值( vec2vec3 等),我使用一个嵌套的表来保存多个值,例如:

material = {
    color = {0.2, 0.3, 1}
}

我想要获取 color 的单个值,这是我尝试获取第一个值的代码:

lua_getglobal(L, "material");
if (!lua_istable(L, -1)) {return;};

lua_pushstring(L, "color");
lua_gettable(L, -2);
if (lua_istable(L, -1)) {
    lua_rawgeti(L, -1, 0);
    printf("%f\n", lua_tonumber(L, -1));
}
lua_pop(L, 1);

但无论在 color 表中的第一个值是什么,它都只能打印出 0.0。我做错了什么?

点赞
用户10953006
用户10953006

第一个索引应该为 1,而不是 0

lua_rawgeti(L, -1, 1);
2020-10-23 05:37:15