当你触摸一块砖时,我正试图制作一个商店的围栏,它会打开Shop Gui,
现在主要的问题是我不知道如何使用脚本打开GUI,而启用过滤只是不会削减它。
有没有人有一个可靠的解释?
首先,为了在触摸砖时执行任何操作,您需要使用砖块的.Touched
属性。你的砖有这个属性,因为它是一个名为Part
的数据类型。
其次,我不确定您希望GUI如何打开,但最基本的方法是使用GUI元素的.Active
属性启用它。这只会让它出现在屏幕上。你GUI元素有这个属性,因为它是一个GuiObject
,无论是Frame,TextButton还是其他任何东西。
代码看起来像这样:
brick = path.to.part.here
gui = path.to.gui.here
function activateGui() --shorthand for "activateGui = function()"
gui.Enabled = true
end
brick.Touched:connect(activateGui)
请注意,.Enabled
是boolean
(true
或false
)。另外,请注意.Touched
是具有:connect(func)
函数的特殊对象。这是因为.Touched
实际上是Event
。所有Event
s都有一个特殊的:connect(func)
函数,该函数接受另一个函数func
的参数,该函数将在事件发生时执行。在这种情况下,我们要求砖块的.Touched
事件在发生时执行activateGui
。
此外,.Enabled
默认设置为true
,因此为了使此方法有效,请确保通过在GUI元素的Properties选项卡中取消选中false
,将其设置为ROBLOX Studio中的.Enabled
。请注意,您不必为GUI的每个元素执行此操作;如果在某个元素上将.Enabled
设置为false,则其所有子元素也将自动隐藏,因此您只需在父元素上执行此操作。
最后,你必须在Local Script
中这样做。因为GUI对于每个玩家来说都是独一无二的,所以它实际上由每个玩家的计算机处理,而不是由ROBLOX服务器本身处理。 Local Scripts
是由播放器的计算机而不是服务器专门处理的脚本,因此,不要尝试使用由服务器处理的常规Script
来执行此操作。
有关您的信息,如果您愿意,可以将上述代码浓缩为:
brick = path.to.part.here
gui = path.to.gui.here
brick.Touched:connect(function()
gui.Enabled = true
end)
这是因为您不必创建函数,为其命名,然后将该名称赋予.Touched
;相反,你可以在现场正确创建它。