【问题标题】:How do you open a GUI when you touch a brick? (with Filtering Enabled)触摸砖块时如何打开 GUI? (启用过滤)
【发布时间】:2019-01-12 11:45:21
【问题描述】:

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

现在的主要问题是我不知道如何打开 GUI,因为在启用过滤的情况下使用脚本并不能解决问题。

有没有人解释清楚?

【问题讨论】:

    标签: user-interface lua roblox


    【解决方案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,因此为了使此方法有效,请确保在 ROBLOX Studio 中将其设置为 false,方法是在 GUI 的“属性”选项卡中取消选中 .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;相反,您可以直接在现场创建它。

    【讨论】:

      猜你喜欢
      • 2015-03-25
      • 2021-05-13
      • 2010-11-19
      • 1970-01-01
      • 2020-09-23
      • 1970-01-01
      • 2020-08-03
      • 2011-02-27
      • 2022-06-15
      相关资源
      最近更新 更多