Roblox Workspace 中的 NumberValue 没有变化

NumberValue is not changing in Roblox Workspace

我为炸弹制作了这个脚本,如果值不是 10,它就会爆炸,但该值在工作区中不会改变,即使我手动将其更改为 10,炸弹仍然会爆炸。

炸弹有一个加一的按钮和一个进入的按钮,这应该会导致它爆炸或不爆炸,但它总是爆炸。

这是输入按钮的脚本:

local Beans = workspace.BigBoomRoom.bomb.button3.Beans.Value

function AwMan()

end

function Creeper()
local explosion = Instance.new("Explosion")
 explosion.Parent = game.Workspace
 explosion.Position = script.Parent.Parent.Position
 explosion.BlastRadius = 25
 explosion.BlastPressure = 9999999999999

end


function onClick(click) 
    if Beans == 10
    then
        do AwMan()
            end

    else
        do Creeper()
        end
    end
    end

script.Parent.MouseClick:connect(onClick)

这是 +1 按钮的单独脚本:

local Bean = workspace.BigBoomRoom.bomb.button3.Beans.Value
function onClick(click) 
     Bean = Bean + 1
end

script.Parent.MouseClick:connect(onClick)

该值在工作区中永远不会改变,炸弹总是会爆炸,所以这两个脚本一定是错误的。

当您将 Beans.Value 保存到局部变量中时,您并没有保留对原始 NumberValue 对象的引用,而是将其值复制到局部变量中。在这两个脚本中,您访问和修改的是变量而不是原始对象,因此永远不会将更改保存回工作区中的对象。

在您的 +1 脚本中,您正在更新 Bean 的值,但您永远不会将其保存回工作区中的 Beans NumberValue。最好像这样保留对 NumberValue 的引用。

-- hold onto the NumberValue object instead of its value
local Beans = workspace.BigBoomRoom.bomb.button3.Beans

local function onClick(playerWhoClicked)
    Beans.Value = Beans.Value + 1
end

script.Parent.MouseClick:Connect(onClick)

同样的技巧将修复您的炸弹脚本:

local Beans = workspace.BigBoomRoom.bomb.button3.Beans

local function AwMan()
    print("Awwww maaaaan")
end

local function Creeper()
    print("hissss")
    local explosion = Instance.new("Explosion")
    explosion.Parent = game.Workspace
    explosion.Position = script.Parent.Parent.Position
    explosion.BlastRadius = 25
    explosion.BlastPressure = 9999999999999
end


local function onClick(playerWhoClicked)
    print("Clicking on the bomb button. Beans = ", Beans.Value)
    if Beans.Value == 10 then
       AwMan()
    else
        Creeper()
    end
end

script.Parent.MouseClick:Connect(onClick)