如何在Love2d中仅运行一次绘图函数

我正在尝试创建一个Love2d太空游戏,我想使用随机数生成恒星,但是没有成功。我用以下函数来创建恒星:

function space.drawStars()

    for i = 1, space.starNum do
        love.graphics.setColor(255, 255, 255)
        space.starSize = love.math.random(1, 10)
        space.starXPosition = love.math.random(1, 1200)
        space.starYPosition = love.math.random(1, 750)
        love.graphics.rectangle("fill", space.starXPosition,space.starYPosition, space.starSize, space.starSize)
    end

end

这个函数的问题在于,当Lua运行它时,似乎会多次运行该函数,这使得星星不断变化。我尝试将该函数的内容放在我的主类的load()函数中,但由于这需要在绘图函数中使用,因此它不会生成恒星。

请有人告诉我如何让这个函数仅运行一次,以便Lua仅绘制一组恒星,而不是不断创建新的星星并摧毁原来的星星。

谢谢!

点赞
用户107090
用户107090

创建星星一次。如下所示(未经测试):

local stars = nil

local function createStars()
    if stars==nil then
        stars={}
        for i = 1, space.starNum do
            stars[i] = {
                Size = love.math.random(1, 10),
                XPosition = love.math.random(1, 1200),
                YPosition = love.math.random(1, 750),
            }
        end
    end
end

function space.drawStars()
    createStars()
    for _, star in ipairs(stars) do
        love.graphics.setColor(255, 255, 255)
        love.graphics.rectangle("fill", star.XPosition, star.YPosition, star.Size, star.Size)
    end
end
2016-02-18 12:28:28