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

我正在尝试做一个商店围栏,当您触摸砖块时,它将打开商店GUI,

现在主要问题是,我不知道如何使GUI打开,因为使用脚本而过滤启用根本行不通。

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

点赞
用户8076767
用户8076767

首先,为了在触碰到砖块时执行任何操作,您需要使用砖块的 .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 是一个布尔值 (truefalse)。另外,请注意,.Touched 是一个具有 :connect(func) 函数的特殊对象。这是因为 .Touched 实际上是一个 Event。所有 Event 都有一个特殊的 :connect(func) 函数,该函数接受另一个函数 func 的参数,该函数在事件发生时执行。在这种情况下,我们要求砖块的 .Touched 事件在发生时执行 activateGui

另外,.Enabled 默认设置为 true,因此为了使这种方法起作用,请确保在 ROBLOX Studio 中通过取消选择 GUI 元素的属性选项卡中的 .Enabled 来将其设置为 false。请注意,您不必为每个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;相反,您可以直接在现场创建它。

2018-08-05 12:21:03