配列でこのようなことをするたびに、非常にイライラするエラーが発生します。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
もちろん、いくつかの不要なコード (幅や高さなどの配列内の余分なパラメーターのみ) を切り取りましたが、要点は理解できました。1 つのオブジェクトを作成してレンダリングするようにこのコードをセットアップすると、次のエラーが発生します。
attempt to index '?' (a nil value)
それが指す行は次の行です。
renderX = objectArray[arraySearch]["X"]
ここで何が問題なのか、将来それを防ぐ方法を知っている人はいますか? これについて本当に助けが必要です。