【问题标题】:Roblox Lua not recognizing when boolvalue = true当 boolvalue = true 时,Roblox Lua 无法识别
【发布时间】:2019-10-29 23:51:55
【问题描述】:

我希望它在 "Open" 的值等于 true 时显示 gui。

我什至以等于 true 的值开始游戏,但没有奏效。也没有错误。

while script.Parent.Parent.Open.Value == true do
    script.Parent.Visible.Value = true
    script .Parent.Parent.Text2.Visible.Value = true
    break
end

我希望两个文本框(“Text1”和“Text2”出现在名为“EndlessPit”的屏幕gui中,以便在屏幕上可见。也没有错误消息。

【问题讨论】:

    标签: lua roblox


    【解决方案1】:

    由于您已经在使用 BoolValues,您可以简单地让 LocalScript 观察值的变化。你可以这样做:

    local openVal = script.Parent.Parent.Open
    local parentGui = script.Parent
    local text2 = script.Parent.Parent.Text2
    
    openVal.Changed:Connect(function(value)
        parentGui.Visible = value
        text2.Visible = value
    end)
    

    这将使它在 BoolValue 从 true 变为 false 或再次变为 true 时打开和关闭元素。

    【讨论】:

      【解决方案2】:

      我只需要删除 Visible 后面的 .Value

      while script.Parent.Parent.Open.Value == true do
          print("moose")
          script.Parent.Visible = true
          script .Parent.Parent.Text2.Visible = true
          break
      end
      

      【讨论】:

      • 实际上,当我在游戏开始时将其设置为 true 时它确实识别了它,但当我稍后将其更改为 true 时它却没有。如果有人知道该信息,将不胜感激。
      • 如果 Open.Value 以 true 开头,则此代码只会循环直到它为 false。没有什么会导致循环再次启动。
      • 在这种情况下使用while 毫无意义(因为break)。这意味着,它进入 while ,然后中断并离开循环。最好使用if-statement,if script.Parent.Parent.Open.Value == true then [your code] end
      【解决方案3】:

      首先,了解script 的祖先是什么样子会很有帮助,即它的父对象是什么类型的对象等等。使用变量来引用这些对象将是一个好的开始。另外,这个名为“EndlessPit”的ScreenGui 是要一直可见,还是只在某些时候可见?

      就您的 while 循环而言,您的问题是否来自您立即跳出循环而不是检查某些条件的事实?我不知道这里的整个故事,因为您只提供了一个 sn-p 代码,因此对您想要实现的目标进行更全面的了解和解释会有所帮助。

      最后,不需要检查true == true,因为OpenBoolValue;那种用布尔值进行的相等检查是不必要的。从总体上看,它们很微小,但删除它们会稍微优化您的代码。

      【讨论】:

        猜你喜欢
        • 2017-07-29
        • 2023-03-15
        • 2021-05-15
        • 1970-01-01
        • 1970-01-01
        • 2023-02-02
        • 1970-01-01
        • 1970-01-01
        • 2019-08-14
        相关资源
        最近更新 更多