Roblox Workspace 中的 NumberValue 没有改变

我为了制作一个炸弹而写了一个脚本,当一个值不是十时它就会爆炸,但是这个值在工作区中没有改变,即使我手动将其改为 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)

这是增加值按钮的独立脚本:

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

script.Parent.MouseClick:connect(onClick)

值从未在工作区中改变,炸弹总是爆炸,所以这两个脚本都可能出了问题。

点赞
用户2860267
用户2860267

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

在你的 +1 脚本中,你正在更新 Bean 的值,但是你从未将其保存回 Workspace 中的 Beans NumberValue。最好使用以下方式保留对 NumberValue 的引用。

-- 保留对 NumberValue 对象的引用而不是它的值
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)
2019-09-09 00:25:01