Lua 和 Love2D,table in table 错误

为什么不起作用呢?我正在尝试将所有对象表放在一个单独的表中,并使用 forloop 遍历每个表并进行绘制。它显示一个错误消息,说:“}” 在第 5 行附近需要等于号

function love.load()
solidstatic = {
ground = {x = 0,y = 160,width = 1000,height = 1000},
box = {x = 80,y = 100,width = 15,height = 15}
}

end

function love.draw()
for i,obj in ipairs(solidstatic) do
love.graphics.rectangle("fill",obj[x],obj[y],obj[width],obj[height])
end
end

编辑:已解决错误问题,我运行了错误的.lua 文件。但仍然没有在屏幕上绘制任何内容

点赞
用户1442917
用户1442917

你需要使用 pairs 而不是 ipairs 来遍历 solidstatic 中的元素,因为该表中没有数组键。

2016-08-04 02:37:27
用户6336645
用户6336645

两个要点:

首先,在列举非数字键时,必须使用 pairs 而不是 ipairs。

for i, v in pairs(table) do
    ...
end

其次,必须将变量索引为字符串。

t = {
    x = 1
}

t['x'] = 1
-- 或者
t.x = 1

这是因为如果没有使用引号进行索引,则会索引全局变量 x,但该变量并不存在。

2016-08-04 08:46:08