我需要帮助 这是剧本:
script.Parent.Parent.Activated:connect(function()
local a = game.Workspace.LogRideToggled.Value
if a == true then
a = false
script.Parent.Click:Play()
end
if a == false then
a = true
script.Parent.Click:Play()
end
end)
这是hirachy:
但是没有发生,也没有错误,除了点击声音播放 我真的需要帮助
答案 0 :(得分:0)
问题在于,在您执行a == true
之后,您将a
设置为false
,然后a == false
匹配。
您可以使用if then else end
语句解决此问题,如下所示:
script.Parent.Parent.Activated:connect(function()
local a = game.Workspace.LogRideToggled.Value
if a == true then
a = false
script.Parent.Click:Play()
else
a = true
script.Parent.Click:Play()
end
end)
但是,这只会更改a
的 local 值,这意味着它不会保存更改。
要解决此问题,我们需要直接指定game.Workspace.LogRideToggled
的值Value
,我们可以这样做:
script.Parent.Parent.Activated:connect(function()
if game.Workspace.LogRideToggled.Value == true then
game.Workspace.LogRideToggled.Value = false
script.Parent.Click:Play()
else
game.Workspace.LogRideToggled.Value = true
script.Parent.Click:Play()
end
end)
虽然这样反复索引是不好的做法,但我们可以将game.Workspace.LogRideToggled
存储在局部变量中。您可以了解其工作原理,但存储value
不会here
script.Parent.Parent.Activated:connect(function()
local logRideToggled = game.Workspace.LogRideToggled
if logRideToggled.Value == true then
logRideToggled.Value = false
script.Parent.Click:Play()
else
logRideToggled.Value = true
script.Parent.Click:Play()
end
end)
此外,== true
是多余的,因为Lua希望truthy
或falsey
值作为条件,在这种情况下所有== true
都会给true
}或false
如果它是假的。
script.Parent.Parent.Activated:connect(function()
local logRideToggled = game.Workspace.LogRideToggled
if logRideToggled.Value then
logRideToggled.Value = false
script.Parent.Click:Play()
else
logRideToggled.Value = true
script.Parent.Click:Play()
end
end)
然而,我们可以更多地清理它,因为我们在两种情况下都使用script.Parent.Click:Play()
,我们可以用逻辑not替换logRideToggled.Value =
,就像这样。
script.Parent.Parent.Activated:connect(function()
local logRideToggled = game.Workspace.LogRideToggled
if logRideToggled.Value then
-- Todo if truthy
else
-- Todo if falsey
end
logRideToggled.Value = not logRideToggled.Value
script.Parent.Click:Play()
end)
但如果您只想切换此值,不要对这两种情况做任何特殊处理,我们可以删除整个条件,留下:
script.Parent.Parent.Activated:connect(function()
local logRideToggled = game.Workspace.LogRideToggled
logRideToggled.Value = not logRideToggled.Value
script.Parent.Click:Play()
end)
希望这有帮助!