You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用字典开发战斗系统时出现Attempt to index nil with Instance错误

问题分析

错误Attempt to index nil with Instance的核心原因是:当你尝试访问Dictionary[action][player]时,Dictionary[action]可能还未被初始化,处于nil状态。此时用player(Instance类型)去索引nil,就会触发这个报错。

修复方案

需要在所有涉及访问Dictionary[action]的函数中,先检查该键是否存在,若不存在则先初始化为空表。以下是修正后的完整代码:

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

function DictionaryHandler.find(player, action)
    local actionTable = Dictionary[action]
    return actionTable and actionTable[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)
    local actionTable = Dictionary[action]
    if actionTable and actionTable[player] then
        actionTable[player] = nil
    end
end

return DictionaryHandler
关键修改点
  • 在find函数中,先取出actionTable,用短路运算符and避免直接索引nil
  • 在add函数中,优先初始化Dictionary[action]为空表,再进行后续操作
  • 在remove函数中,先判断actionTable是否存在,再检查并移除player对应的键值对

内容的提问来源于stack exchange,提问作者Bad Scripter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 06:54:47