Roblox - 尝试使用'leaderstats'来索引空值

请问有人能告诉我如何修复运行脚本时出现的错误吗?谢谢

4行:Workspace.Slide1.PointsPart.Script:4: 尝试使用'leaderstats'来索引空值
script.Parent.Touched:Connect(function(hit)
    local player = hit.Parent:FindFirstChild("Humanoid")
    local plr = game.Players:GetPlayerFromCharacter(hit.Parent)
    if plr.leaderstats.Points.Value >= 0 then
        wait()
        script.Disabled = true
        script.Parent.Transparency = 1
        script.Parent.CanCollide = false
        plr.leaderstats.Points.Value = plr.leaderstats.Points.Value +5
        wait(0.5)
        script.Parent.Transparency = 1
        script.Parent.CanCollide = false
        script.Disabled = false
    end
end)
点赞
用户2860267
用户2860267

Touched 事件在任何碰触该部件的物体上触发。你没有处理部件不是玩家角色子对象的情况。

local plr = game.Players:GetPlayerFromCharacter(hit.Parent)
if not plr then
    return
end

if plr.leaderstats.Points.Value >= 0 then
    -- do something
end
2020-08-27 20:09:10
用户14179973
用户14179973
你可以将其更改为以下代码:

script.Parent.Touched:Connect(function(hit) local player = hit.Parent:FindFirstChild("Humanoid") local plr = game.Players:GetPlayerFromCharacter(hit.Parent) if plr and plr.leaderstats.Points.Value >= 0 then wait() script.Disabled = true script.Parent.Transparency = 1 script.Parent.CanCollide = false plr.leaderstats.Points.Value = plr.leaderstats.Points.Value +5 wait(0.5) script.Parent.Transparency = 1 script.Parent.CanCollide = false script.Disabled = false end end)

```

编译器会首先计算 "plr" 实例,

如果它不是空的,则编译器会计算 "plr.leaderstats.Points.Value >= 0",

这个过程称为“短路运算”。

2020-08-29 05:23:05