每当我像这样使用数组做任何事情时,都会出现非常烦人的错误。我有一段代码在love.load()函数中设置了这个数组:
function iceToolsInit()
objectArray = {} --for object handling
objectArrayLocation = 0
end
然后编写允许创建对象的代码。它基本上获取有关该对象的所有信息,并将其插入到数组中。
function createObject(x, y, renderimage) --used in the load function
--objectArray is set up in the init function
objectArrayLocation = objectArrayLocation + 1
objectArray[objectArrayLocation] = {}
objectArray[objectArrayLocation]["X"] = x
objectArray[objectArrayLocation]["Y"] = y
objectArray[objectArrayLocation]["renderimage"] =
love.graphics.newImage(renderimage)
end
完成后,更新函数会读取objectArray并相应地呈现图像:
function refreshObjects() --made for the update function
arrayLength = #objectArray
arraySearch = 0
while arraySearch <= arrayLength do
arraySearch = arraySearch + 1
renderX = objectArray[arraySearch]["X"]
renderY = objectArray[arraySearch]["Y"]
renderimage = objectArray[arraySearch]["renderimage"]
if movingLeft == true then --rotation for rightfacing images
renderRotation = 120
else
renderRotation = 0
end
love.graphics.draw(renderimage, renderX, renderY, renderRotation)
end
end
当然,我剪掉了一些不必要的代码(数组中的额外参数,例如宽度和高度),但你可以理解。当我设置这段代码以创建一个对象并渲染它时,我遇到了以下错误:
attempt to index '?' (a nil value)
它所指的行是这一行:
renderX = objectArray[arraySearch]["X"]
有人知道这里出了什么问题,我该如何预防它发生在未来?我真的需要帮助。