我希望当值等于“ 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”的screengui中,在屏幕上可见。也没有错误消息。
答案 0 :(得分:0)
我只需要删除Visible后面的.Value
while script.Parent.Parent.Open.Value == true do
print("moose")
script.Parent.Visible = true
script .Parent.Parent.Text2.Visible = true
break
end
答案 1 :(得分:0)
首先,了解script
的祖先是什么样,即,其父对象是什么样的对象,依此类推。使用变量来引用那些对象将是一个好的开始。另外,这个ScreenGui
叫做“ EndlessPit”是要始终可见还是仅在某些时候可见?
就您的while循环而言,您的问题可能出在您立即脱离循环而不是检查某些条件的事实吗?我不了解这里的全部内容,因为您只提供了一段代码,所以对您要尝试实现的目标进行更全面的了解和解释会很有帮助。
最后,由于true == true
是Open
,因此无需检查BoolValue
是否有效;那种用bool进行的相等性检查是不必要的。在宏伟的方案中,它们很小,但是删除它们会稍微优化您的代码。
答案 2 :(得分:0)
由于您已经在使用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时,这将打开和关闭元素。