Addressing an index in array in Lua
我正在尝试使用 Love 2d 引擎编写一个简单的游戏。它使用 lua 作为脚本语言。我对数组有一些问题,找不到任何解决方案。这是我的问题:
1 2 3 4 5 6 7 | for i = 1, 10 do objects.asteroids = {} objects.asteroids[i] = {} objects.asteroids[i].body = love.physics.newBody(world, 650/2, 650/2,"dynamic") objects.asteroids[i].size = 3 objects.asteroids[i].angle = math.random(6) end |
在同一个函数中,我正在尝试执行以下操作:
1 2 3 | for i = 1, 10 do objects.asteroids[i].size = 2 end |
我在尝试运行我的游戏时收到此错误:
Error
main.lua:48: attempt to index a nil value
其中第 48 行指的是这行代码:
1 | objects.asteroids[i].size = 2 |
你会在每次循环迭代时覆盖
1 2 3 | for i = 1, 10 do objects.asteroids = {} -- <== Here. objects.asteroids[i] = {} |
这意味着您尝试添加的小行星对象最终会在循环的下一步中被删除,因为
你可能想像这样重新排列它:
1 2 3 4 5 | objects.asteroids = {} for i = 1, 10 do objects.asteroids[i] = {} -- ... |