2

我正在尝试使用Love 2d引擎编写一个简单的游戏。它使用lua作为脚本语言。我对数组有一些问题,找不到任何解决方案。这是我的问题:

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 

在同一功能中,我尝试执行以下操作:

for i = 1, 10 do 
    objects.asteroids[i].size = 2 
end 

尝试运行我的游戏时出现此错误:

错误 main.lua:48: 尝试索引一个 nil 值

其中第 48 行指的是这行代码:

objects.asteroids[i].size = 2 
4

1 回答 1

2

您正在覆盖objects.asteroids每个循环迭代。

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

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

您可能希望像这样重新排列它:

objects.asteroids = {}

for i = 1, 10 do
  objects.asteroids[i] = {}
  -- ...
于 2014-01-19T23:38:57.100 回答