尝试使用'Value'访问空值

我将要制作一个切换器。这意味着当你装备这个工具时,切换器(服务端脚本)将在一个文件夹中打开身体系统,并在 ServerScriptService 中将它们全部禁用。下面是切换器代码。

local Tool = script.Parent
local SSS = game.ServerScriptService:WaitForChild("CombatFolder")

function onEquippedLocal()
    SSS:WaitForChild("CanAttack").Disabled = false
    SSS:FindFirstChild("M1").Disabled = false

    SSS:FindFirstChild("M2").Disabled = false

end

function onUnequippedLocal()
    SSS:WaitForChild("CanAttack").Disabled = true
    SSS:FindFirstChild("M1").Disabled = true

    SSS:FindFirstChild("M2").Disabled = true

end

Tool.Equipped:connect(onEquippedLocal)
Tool.Unequipped:connect(onUnequippedLocal)

当我装备该工具时,这是输出结果:

  10:50:22.732  Players.TeemoHoang_2008.Backpack.SwordCombat.M2:15: attempt to index nil with 'Value'  -  Client - M2:15
  10:50:22.732  Stack Begin  -  Studio
  10:50:22.732  Script 'Players.TeemoHoang_2008.Backpack.SwordCombat.M2', Line 15  -  Studio - M2:15
  10:50:22.732  Stack End  -  Studio
  10:50:24.099  Players.TeemoHoang_2008.Backpack.SwordCombat.newCombat:54: attempt to index nil with 'Value'  -  Client - newCombat:54
  10:50:24.099  Stack Begin  -  Studio
  10:50:24.099  Script 'Players.TeemoHoang_2008.Backpack.SwordCombat.newCombat', Line 54  -  Studio - newCombat:54
  10:50:24.099  Stack End  -  Studio

这是工具中 M2(本地脚本)中错误开始的函数:

script.Parent.Equipped:Connect(function()
    uis.InputBegan:Connect(function(input)
        if input.UserInputType == Enum.UserInputType.MouseButton2  then
            if debounce == false and char:FindFirstChild("CanAttack").Value == true and char:FindFirstChild("Stun") == nil and char:FindFirstChild("eStun") == nil and char:FindFirstChild("BlockBreak") == nil and char:FindFirstChild("IsBlocking") == nil then
                if  char:FindFirstChild("SwordCombat") then
                    local tool =  char:FindFirstChild("SwordCombat")
                    if tool:IsA("Tool")then
                        debounce = true

                        remote:FireServer()
                    end
                end
            end
        end
    end)
end)

这是工具中 newCombat(本地脚本)中的错误行:

script.Parent.Activated:Connect(function()
    if char:FindFirstChild("CanAttack").Value == true and char:FindFirstChild("Stun") == nil and char:FindFirstChild("eStun") == nil and char:FindFirstChild("IsBlocking") == nil and char:FindFirstChild("BlockBreak") == nil then

我已经尝试将 newCombat 和 M2 禁用并在同时开启身体系统时重新启用它们,但是这样做时 M2 仍然显示错误,而一切仍然不能正常工作。请帮助我!

点赞
用户2858170
用户2858170

这个错误很明显。你正在尝试使用“Value”索引一个空值,所以char:FindFirstChild("CanAttack")返回了空值。

如果没有给定名称的子项,则Instance:FindFirstChilde(name)返回空值。

找出为什么没有这样的子项,或在尝试索引它之前检查是否实际上有子项。

2021-06-20 06:14:00