在 Lua 中寻址数组中的索引

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

你会在每次循环迭代时覆盖 objects.asteroids

1
2
3
for i = 1, 10 do
  objects.asteroids = {} -- <== Here.
  objects.asteroids[i] = {}

这意味着您尝试添加的小行星对象最终会在循环的下一步中被删除,因为 object.asteroids 被设置为新的 {} 表,而旧表变得不可访问此后。

你可能想像这样重新排列它:

1
2
3
4
5
objects.asteroids = {}

for i = 1, 10 do
  objects.asteroids[i] = {}
  -- ...