繁体   English   中英

尝试使用 Instance 索引 nil

[英]Attempt to index nil with Instance

我正在尝试用字典制作一个战斗系统,但是有一个错误会阻止整个系统。 这是脚本

local Dictionary = require(script.Dictionary)
 
local DictionaryHandler = {}

function DictionaryHandler.find(player, action)
    return Dictionary[action][player]
end

function DictionaryHandler.add(player, action)
    if not Dictionary[action][player] then
        Dictionary[action][player] = true
    end
end

function DictionaryHandler.remove(player, action)
    if Dictionary[action][player] then
        Dictionary[action][player] = nil
    end
end

return DictionaryHandler

错误在标题中说,所以是的

看起来您正在尝试创建一个系统来检查是否有映射到每个玩家的动作。 但是问题来自于最初检查嵌套表中是否存在键。

if not Dictionary[action][player] then

从左到右读取代码, Dictionary[action]可能不存在,因此计算结果为nil ,然后您尝试索引nil[player]并引发错误。 你的每个函数都有这个问题。

因此,您需要首先仔细检查Dictionary[action]是否存在,或者您需要确保它始终解析为空表。

function DictionaryHandler.find(player, action)
    if not Dictionary[action] then
        return nil
    end
    return Dictionary[action][player]
end

function DictionaryHandler.add(player, action)
    if not Dictionary[action] then
        Dictionary[action] = {}
    end
    if not Dictionary[action][player] then
        Dictionary[action][player] = true
    end
end

function DictionaryHandler.remove(player, action)
    if Dictionary[action] then
        if Dictionary[action][player] then
            Dictionary[action][player] = nil
        end
        if next(Dictionary[action]) == nil then
            Dictionary[action] = nil
        end
    end
end

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM