【问题标题】:How to get the value from a table within a table with Lua?如何使用 Lua 从表中的表中获取值?
【发布时间】:2021-02-06 04:30:07
【问题描述】:

我正在为我正在工作的游戏引擎编写一个材质系统,其中 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);

但它只打印0.0,无论color 表中的第一个值如何。我做错了什么?

【问题讨论】:

    标签: c++ c lua


    【解决方案1】:

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

    lua_rawgeti(L, -1, 1);
    

    【讨论】:

    • 哦,谢谢。我没有意识到 Lua 中的数组是从 1 开始而不是 0 开始的!
    • 其实 Lua 中的索引是从 1 开始的。在 Lua 使用索引的 C API 中,你也需要遵守这个约定,所以第一个索引是 1。你仍然可以在 Lua 中的索引 0 处取值,但不建议这样做,并且某些功能将无法正常工作。
    猜你喜欢
    • 1970-01-01
    • 2015-05-21
    • 2020-05-05
    • 2014-08-27
    • 2014-02-09
    • 2015-03-26
    • 1970-01-01
    • 2022-12-05
    • 2019-08-14
    相关资源
    最近更新 更多