碰砖时如何打开 GUI? (启用过滤)
How do you open a GUI when you touch a brick? (with Filtering Enabled)
我正在尝试制作一个商店外壳,当你触摸一块砖头时,它会打开商店界面,
现在的主要问题是我不知道如何打开 GUI,因为在启用过滤的情况下使用脚本不会削减它。
有没有人有一个可靠的解释?
首先,为了在触摸砖块时执行任何动作,您需要使用 .Touched
attribute of your brick. Your brick has this attribute because it is a data type called a Part
.
其次,我不确定您希望如何打开 GUI,但最基本的方法是使用 .Active
attribute of your GUI element. This will simply make it appear on screen. You GUI element has this attribute because it is a GuiObject
启用它,无论是框架、文本按钮还是其他任何东西。
代码看起来像这样:
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
都有一个特殊的 :connect(func)
函数,该函数接受另一个函数 func
的参数,该函数将在事件发生时执行。在这种情况下,我们要求砖块的 .Touched
事件在发生时执行 activateGui
。
此外,.Enabled
默认设置为 true
,因此为了使此方法起作用,请确保在 ROBLOX Studio 中取消选中 [=] 将其设置为 false
16=] 在 GUI 元素的“属性”选项卡中。请注意,您不必为 GUI 的每个元素都执行此操作;如果在某个元素上将 .Enabled
设置为 false,则其所有子元素也将自动隐藏,因此您只需在父元素上设置即可。
最后,您 必须在 Local Script
中执行此操作。因为 GUI 对于每个玩家都是独一无二的,所以它实际上是由每个玩家的计算机处理的,而不是 ROBLOX 服务器本身。 Local Scripts
are scripts that are specifically handled by a player's computer and not the server, so it is crucial that you do not try to do this with a regular Script
,由服务器处理。
供您参考,如果您愿意,可以将上述代码压缩为:
brick = path.to.part.here
gui = path.to.gui.here
brick.Touched:connect(function()
gui.Enabled = true
end)
这是因为您不必创建一个函数,为其命名,然后将该名称赋予 .Touched
;相反,您可以当场创建它。
我正在尝试制作一个商店外壳,当你触摸一块砖头时,它会打开商店界面,
现在的主要问题是我不知道如何打开 GUI,因为在启用过滤的情况下使用脚本不会削减它。
有没有人有一个可靠的解释?
首先,为了在触摸砖块时执行任何动作,您需要使用 .Touched
attribute of your brick. Your brick has this attribute because it is a data type called a Part
.
其次,我不确定您希望如何打开 GUI,但最基本的方法是使用 .Active
attribute of your GUI element. This will simply make it appear on screen. You GUI element has this attribute because it is a GuiObject
启用它,无论是框架、文本按钮还是其他任何东西。
代码看起来像这样:
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
都有一个特殊的 :connect(func)
函数,该函数接受另一个函数 func
的参数,该函数将在事件发生时执行。在这种情况下,我们要求砖块的 .Touched
事件在发生时执行 activateGui
。
此外,.Enabled
默认设置为 true
,因此为了使此方法起作用,请确保在 ROBLOX Studio 中取消选中 [=] 将其设置为 false
16=] 在 GUI 元素的“属性”选项卡中。请注意,您不必为 GUI 的每个元素都执行此操作;如果在某个元素上将 .Enabled
设置为 false,则其所有子元素也将自动隐藏,因此您只需在父元素上设置即可。
最后,您 必须在 Local Script
中执行此操作。因为 GUI 对于每个玩家都是独一无二的,所以它实际上是由每个玩家的计算机处理的,而不是 ROBLOX 服务器本身。 Local Scripts
are scripts that are specifically handled by a player's computer and not the server, so it is crucial that you do not try to do this with a regular Script
,由服务器处理。
供您参考,如果您愿意,可以将上述代码压缩为:
brick = path.to.part.here
gui = path.to.gui.here
brick.Touched:connect(function()
gui.Enabled = true
end)
这是因为您不必创建一个函数,为其命名,然后将该名称赋予 .Touched
;相反,您可以当场创建它。