table.remove 结束于超出边界的位置。

我正在尝试从我的数组中删除一个元素,但我总是遇到一个异常:

bad argument #1 to 'remove' (position out of bounds)

这是代码:

    -设置玩家
    players = {}
    for i = 03 do
        local gp = InputHandler:gamepad(i)
        if(gp:isConnected())then
            logMessage(i ..“已连接”)
            players [i] = createCharacter(i,gp)
        end
    end

--. ....

--更新玩家
对于k,player在对中pairs(players)do
    logMessage(“player index:”.. k)

    -如果更新返回false,则播放器失去了所有生命
    if(player.update(deltaTime)== falsethen
        table.remove(players,k)
    end
end

我也尝试了另一个循环来自给定的答案([https://stackoverflow.com/a/12397571/1405318](https://stackoverflow.com/a/12397571/1405318)),同样的错误。

i = 0
while i <=#players时
    local player = players [i]
    if(player.update(deltaTime)== falsethen
        table.remove(players,i)
    else
        i = i + 1
    end
end
点赞
用户1405318
用户1405318

感谢一条评论(现已被删除),我得以解决这个问题。Lua 的索引从 1 开始。 所以我只需要将设置更改为这样:

-- 设置玩家
players = {}
for i=0, 3 do
    local gp = InputHandler:gamepad(i)
    if(gp:isConnected()) then
        logMessage(i .. " 已连接")
        players[i+1] = createCharacter(i, gp)
    end
end
2016-01-08 13:25:19