LOVE2D中的四边形如何具有nil值?

问题描述

我正在lovE2D的游戏中进行第二次加电,我希望它能使最后碰到的球拍变大。但是,这给了我一个错误

Error

powerups/PaddleGrow.lua:64: bad argument #2 to 'draw' (Quad expected,got nil)


Traceback

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

虽然我实际上是在Util函数中为其分配的,但我的Quad在draw函数中为nil值:

--[[
    Simple function for making powerups.
]]
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,atlas:getDimensions())
    end
    
    return quads
end

我的画图函数在Dependencies中有这个框架和纹理,我添加了powerups作为一种。我的帧是一张3张道具的桌子,但我的第二副道具却不想显示

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

为什么会变成这样?

解决方法

您的代码似乎分配了quads表的相同索引。

counter在函数的开头被定义为1,并且您正在执行一次for循环,该循环仅将新quad分配为1,三次。

您是说quads[i] = love.graphics.newQuad(x,y,8,atlas:getDimensions())吗?

--[[
    Simple function for making powerups.
]]
function GenerateQuadsPowerups(atlas)
    local x = 0
    local y = 0
    local quads = {}
    
    for i = 1,3 do
        quads[i] = love.graphics.newQuad(x,atlas:getDimensions())
    end
    
    return quads
end