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)
我为炸弹制作了这个脚本,如果值不是 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)