在love2d lua中错误的参数#1到'insert'(表格预期,得到了nil)错误

时间:2016-11-23 22:45:38

标签: lua love2d

当我尝试运行我的lua脚本时,我一直收到错误。 错误是:错误的参数#1到'insert'(表格预期,得到零)

这是我的游戏循环代码:

local GameLoop = {}

local insert = table.insert
local remove = table.remove

function GameLoop:create()

    local gameLoop = {}

    function gameLoop:addLoop(obj)

        insert(self.clocks,obj)

    end

    function gameLoop:update(dt)

        for clocks = 0,#self.clocks do
            local obj = self.clocks[clocks]
            if obj ~= nil then
                obj:tick(dt)
            end
        end

    end

return gameLoop

end

return GameLoop

1 个答案:

答案 0 :(得分:0)

根据您显示的代码,您的gameLoop表中不包含clocks成员,所以您真正将nil传递给insert(self.clocks, obj)的第一个参数}。

简单修复是添加该成员。

local gameLoop = { clocks = {} }

顺便说一下,使用metatables编写这种类型的构造通常会更好,因为它减少了函数重复。

local insert, remove =
    table.insert, table.remove

local GameLoop = {}
GameLoop.__index = GameLoop

function GameLoop:create ()
    return setmetatable({
        clocks = {}
    }, self)
end

function GameLoop:addLoop (obj)
    insert(self.clocks, obj)
end

function GameLoop:update (dt)
    for _, clock in ipairs(self.clocks) do
        obj:tick(dt)
    end
end

return GameLoop