当你触摸砖块时如何打开GUI? (启用过滤)

问题描述 投票:0回答:1

当你触摸一块砖时,我正试图制作一个商店的围栏,它会打开Shop Gui,

现在主要的问题是我不知道如何使用脚本打开GUI,而启用过滤只是不会削减它。

有没有人有一个可靠的解释?

user-interface lua roblox
1个回答
1
投票

首先,为了在触摸砖时执行任何操作,您需要使用砖块的.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)

请注意,.Enabledbooleantruefalse)。另外,请注意.Touched是具有:connect(func)函数的特殊对象。这是因为.Touched实际上是Event。所有Events都有一个特殊的: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;相反,你可以在现场正确创建它。

© www.soinside.com 2019 - 2024. All rights reserved.