如何更改 GUI 框架的可见性

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

我在编码方面非常陌生,我已经尝试了几个小时,但无法更改我添加到游戏中的游戏菜单的可见性。

这是我的代码,我试图在单击按钮时使名为“MenuFrame”的框架切换可见性。

The GUI is under

local button = script.Parent
local menu = script.Parent.Parent.Parent:FindFirstAncestor("MenuFrame")

local function onButtonClicked()
    if menu.Visible then
        menu.SetAttribute(menu,Visible,false)
    else
        menu.SetAttribute(menu,Visible,true)
    end
end

button.MouseButton1Down:Connect(onButtonClicked)

错误是

7: attempt to index nil with 'Visible'

对于我可以更改或修复的内容有什么建议吗

lua roblox roblox-studio
1个回答
0
投票

您在这里遇到了一些问题,首先,您尝试通过向上实例树查找实例,然后调用 FindFirstAncestor。您应该直接转到实例本身,如下所示。

其次,Visible 是 GUI 的属性,而不是属性。属性仅供开发人员使用,不会更改有关实例本身的任何内容,请参阅 (https://create.roblox.com/docs/studio/properties#instance-attributes) 了解更多信息。 因此,无需调用 SetAttribute,只需索引 Visible 属性并设置它即可

local button = script.Parent
local menu = script.Parent.Parent.Parent

local function onButtonClicked()
    if menu.Visible then
        menu.Visible = false
    else
        menu.Visible = true
    end
end

button.MouseButton1Down:Connect(onButtonClicked)

此外,为了使代码更简洁,您可以代替 if 语句,简单地使用一些布尔逻辑来反转它。

local function onButtonClicked()
    menu.Visible = not menu.Visible
end
© www.soinside.com 2019 - 2024. All rights reserved.