gpt4 book ai didi

arrays - Lua/LOVE 索引问题

转载 作者:行者123 更新时间:2023-12-05 00:28:35 26 4
gpt4 key购买 nike

每当我用数组做这样的事情时,我都会遇到一个非常恼人的错误。我有在 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"]

有谁知道这里出了什么问题,以及我将来如何防止它?我真的需要这方面的帮助。

最佳答案

这是一对一的错误:

arraySearch = 0
while arraySearch <= arrayLength do
arraySearch = arraySearch + 1

你通过循环 arrayLength+1遍历索引的次数 1..arrayLength+1 .您只想通过循环 arrayLength索引次数 1..arrayLength .解决方法是将条件改为 arraySearch < arrayLength .

另一种(更 Lua-ly 的方式)是将其写为:
for arraySearch = 1, #objectArray do

更 Lua-ly 的方式是使用 ipairstable.field引用而不是( table["field"] ):
function refreshObjects()
for _, el in ipairs(objectArray) do
love.graphics.draw(el.renderimage, el.X, el.Y, movingLeft and 120 or 0)
end
end
objectArraymovingLeft可能应该作为参数传递...

关于arrays - Lua/LOVE 索引问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18767660/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com