我正在尝试使用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
尝试运行游戏时出现此错误:
Error main.lua:48: attempt to index a nil value
其中第 48 行引用了这行代码:
objects.asteroids[i].size = 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] = {}
-- ...
关于arrays - 在Lua中寻址数组中的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21224098/