Roblox - Как мне создать сценарий, который закрывает открытый графический интерфейс при открытии другого?

У меня есть два графических интерфейса, которые открываются кнопкой, каждый в верхней части экрана, но я хочу сделать так, чтобы, если кто-то пытается открыть второй графический интерфейс с первым открытым, он закроет первый перед открытием второго. .


person Dragonshield    schedule 15.02.2016    source источник


Ответы (3)


Вы можете сделать что-то вроде:

local frames = {
    [buttonA] = frameA;
    [buttonB] = frameB;
}
for button,frame in pairs(frames) do
    button.MouseButton1Click:connect(function()
        if frame.Visible then
            -- If we try to reopen the current frame, close it
            frame.Visible = false
            return
        end
        -- Close all frames and make ours visible
        for k,v in pairs(frames) do
            -- 'v == frame' is true if it's our frame
            v.Visible = v == frame
        end
    end)
end

Вам также следует посетить ROBLOX Wiki. В нем есть несколько хороших руководств по Lua и тому подобное, например, открытие / закрытие графических интерфейсов.

person EinsteinK    schedule 16.02.2016
comment
Спасибо, но я действительно не знаю, как бы мне это удалось. Если это поможет, то имена экранных графических интерфейсов пользователя - GameUpdateLog, Instructions и GamepassShop. Внутри находятся кадры UpdateLog, ShopInterface и InsInterface. Кнопки также называются OpenLog, OpenInstructions и OpenShop. - person Dragonshield; 16.02.2016
comment
Почему бы вам не поместить все в один экранный интерфейс? Тогда вы просто делаете [gui.OpenLog] = gui.UpdateLog, [gui.OpenInstructions] = gui.InsInterface, etc - person EinsteinK; 16.02.2016

100% РАБОТА Чтобы сделать открывающий и закрывающий графический интерфейс ... Поместите этот скрипт: FIRSTGUINAME - это ваш первый графический интерфейс, переименуйте его, а SECONDGUINAME - это ваше второе имя интерфейса, так что ...

FIRSTGUINAME = script.Parent - очень важная классифицирующая информация SECONDGUINAME = script.Parent.Parent.Parent: WaitForChild (ВАШ ВТОРОЙ GUI)

FIRSTGUINAME.MouseButton1Click: connect (function () SECONDGUINAME.Visible = not Visible

Вот и все, теперь просто скопируйте, вставьте это и свой набор

person greatneil80    schedule 20.08.2016

Если вы хотите закрыть графический интерфейс, если открыт другой, вы можете попробовать этот код:

GUI1 = (insert)
GUI2 = (insert)

GUI.MouseButton1Click:connect(function()
if GUI1.Visible == false then
if GUI2.Visible == true then
GUI2.Visible = false
GUI1.Visible = true
else
GUI.Visible = true
end
else 
GUI1.Visible = false
end

Если вы увлекаетесь необычными делами с подростками, возможно, вам придется провести это исследование самостоятельно.

person Lua Tutoring    schedule 08.07.2018