当我尝试运行我的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
答案 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