为什么我的去抖动功能不起作用,却没有产生任何错误?

为什么我的去抖动功能不起作用,却没有产生任何错误?

以下是我的脚本,但它没有起作用。

local UIS = game:GetService("UserInputService")
local toggle = false

script.Parent.BackpackFrame.Visible = false
script.Parent.BackpackText.Visible = false

UIS.InputBegan:connect(function(input)
    if input.KeyCode == Enum.KeyCode.E then
        if toggle == false then
            script.Parent.BackpackFrame.Visible = true
            script.Parent.BackpackText.Visible = true
            toggle = true
        end

        if toggle == true then
            script.Parent.BackpackFrame.Visible = false
            script.Parent.BackpackText.Visible = false
            toggle = false
        end
    end
end)
点赞
用户2041317
用户2041317

代码在将 toggle 设置为 true 之后立即将其设置为 false。

if toggle == false then
   -- false part
   toggle = true
end

if toggle == true then
    -- true part
    toggle = false
end

可以使用 else 代替两次检查 toggle

if toggle then
    -- true part
    toggle = false
else
    -- false part
   toggle = true
end
2021-07-14 12:38:44
用户2858170
用户2858170

如果 toggle 为 false,你设置它为 true。

if toggle == false then
  script.Parent.BackpackFrame.Visible = true
  script.Parent.BackpackText.Visible = true
  toggle = true
end

然后立即在进入第二个条件语句时将其设置为 false。

if toggle == true then
  script.Parent.BackpackFrame.Visible = false
  script.Parent.BackpackText.Visible = false
  toggle = false
end

这样,你的更改将立即被撤销,因为没有任何东西有机会更新。

如果你有两个互斥的状态,则使用 if/else。

if toggle == false then
  script.Parent.BackpackFrame.Visible = true
  script.Parent.BackpackText.Visible = true
  toggle = true
else
  script.Parent.BackpackFrame.Visible = false
  script.Parent.BackpackText.Visible = false
  toggle = false
end

因为你只是分配布尔值,所以可以简单地摆脱你的条件,像这样做:

toggle = not toggle -- 切换你的状态
-- 将状态分配给可见属性
script.Parent.BackpackFrame.Visible = toggle
script.Parent.BackpackText.Visibile = toggle
2021-07-14 13:42:07