LOVE2D中我的四元组为什么为nil值?

我正在我的游戏中制作第二个升级道具,在LOVE2D中我希望它能够使我最后接触的球拍变大。然而,它却给我了一个错误:

错误

powerups/PaddleGrow.lua:64: draw的第二个参数错误 (预期得到四元组,实际得到了nil)

Traceback

[C]: in function 'draw'
powerups/PaddleGrow.lua:64: in function 'render'
main.lua:630: in function 'draw'
[C]: in function 'xpcall'

我的四元组在draw函数中是为nil值的,尽管我实际上在一个Util函数中定义了它:

--[[
    制作升级道具的简单函数
]]
function GenerateQuadsPowerups(atlas)
    local x = 0
    local y = 0
    local counter = 1
    local quads = {}

    for i = 1, 3 do
        quads[counter] = love.graphics.newQuad(x, y, 8, 8, atlas:getDimensions())
    end

    return quads
end

我的draw函数有帧和texture参数,我把powerups作为一个参数添加进去。我的frames是一个包含了三个升级道具的表,但是我的第二个升级道具却没有出现。

function PaddleGrow:render()
    if self.inPlay then
        love.graphics.draw(textures['powerups'], frames['powerups'][2], self.x, self.y)
    end
end

为什么会出现这种情况呢?

点赞
用户13955436
用户13955436

你的代码似乎在为quads表赋相同的索引。

在函数的开头一次定义了counter为1,然后在循环中只将新的quad分配给1三次。

你的意思是要写成quads[i] = love.graphics.newQuad(x, y, 8, 8, atlas:getDimensions())吗?

--[[
    用于制作游戏道具的简单功能函数。
]]
function GenerateQuadsPowerups(atlas)
    local x = 0
    local y = 0
    local quads = {}

    for i = 1, 3 do
        quads[i] = love.graphics.newQuad(x, y, 8, 8, atlas:getDimensions())
    end

    return quads
end
2020-08-18 04:19:18