Створення меню

Вступ і демонстрація

Пояснення:

  • Що таке меню в іграх Roblox?

  • Приклади меню: пауза, налаштування, інвентар.

  • Компоненти GUI: ScreenGui, Frame, TextButton, TextLabel.

Дії:

  1. Відкрити Roblox Studio.

  2. Створити новий Baseplate проєкт.

  3. У StarterGui додати ScreenGui, назвати MainMenuGui.

  4. Всередині ScreenGui створити Frame — це буде вікно меню.

  5. Змінити колір, розміри, кут закруглення.


🛠️ Частина 2 (0:20–0:50) — Додавання кнопок

Завдання:

  1. У Frame додати 3 TextButton:

    • "Грати"

    • "Налаштування"

    • "Вийти"

  2. Налаштувати текст, колір, шрифт і розташування.

  3. Додати UIListLayout для вертикального вирівнювання кнопок.

Пояснення:

  • Як працюють кнопки у GUI.

  • Подія .MouseButton1Click.


💡 Частина 3 (0:50–1:20) — Сценарії для кнопок

1. Ховати/показувати меню за натиском "M"

-- LocalScript в MainMenuGui
local player = game.Players.LocalPlayer local menu = script.Parent:WaitForChild("Frame") local UIS = game:GetService("UserInputService") UIS.InputBegan:Connect(function(input, isTyping) if isTyping then return end if input.KeyCode == Enum.KeyCode.M then menu.Visible = not menu.Visible end end)

2. Реакція на натискання кнопки "Грати"

local playButton = menu:WaitForChild("PlayButton")
playButton.MouseButton1Click:Connect(function() menu.Visible = false -- Можна додати телепортацію або запуск гри end)

3. Вийти з гри (для тесту тільки)

local exitButton = menu:WaitForChild("ExitButton")
exitButton.MouseButton1Click:Connect(function() game:Shutdown() -- працює лише у Studio end)

⚙️ Частина 4 (1:20–1:40) — Додаткові функції

1. Анімація появи меню

local TweenService = game:GetService("TweenService")
function toggleMenu() if menu.Visible then local tween = TweenService:Create(menu, TweenInfo.new(0.3), {Size = UDim2.new(0, 0, 0, 0)}) tween:Play() tween.Completed:Connect(function() menu.Visible = false end) else menu.Size = UDim2.new(0, 0, 0, 0) menu.Visible = true local tween = TweenService:Create(menu, TweenInfo.new(0.3), {Size = UDim2.new(0.3, 0, 0.4, 0)}) tween:Play() end end

2. Показ сторінки налаштувань

  • Створити другий FrameSettingsFrame.

  • При кліку на кнопку “Налаштування” ховати MainFrame, показувати SettingsFrame.


🧪 Частина 5 (1:40–1:50) — Тестування

Перевірка:

  • Чи відкривається меню натисканням "M"?

  • Чи працює кнопка "Грати"?

  • Чи ховається меню?

  • Чи працює кнопка "Налаштування"?

  • Чи працює анімація?


📝 Частина 6 (1:50–2:00) — Підсумок та домашнє завдання

✅ Що ми вивчили:

  • Робота з GUI елементами.

  • Події кнопок.

  • Робота з TweenService.

  • Використання клавіш для керування меню.

📚 Домашнє завдання:

  1. Додай нову кнопку "Магазин", що відкриває окреме меню з товарами.

  2. Зроби кастомні іконки замість тексту на кнопках (використовуй ImageButton).

  3. Додай кнопку "Музика: Вкл/Викл" і зроби її функціональною.

  4. Зроби так, щоб меню закривалося автоматично при натисканні поза межами Frame.


Повний скрипт, розташованиу в ScreenGui (MainMenuGui) -> LocalScript:

local UIS = game:GetService("UserInputService")
local TweenService = game:GetService("TweenService")
local menu = script.Parent:WaitForChild("MainFrame")
local settingsFrame

-- створимо окреме меню налаштувань
settingsFrame = Instance.new("Frame")
settingsFrame.Name = "SettingsFrame"
settingsFrame.Size = UDim2.new(0.3, 0, 0.4, 0)
settingsFrame.Position = menu.Position
settingsFrame.Visible = false
settingsFrame.BackgroundColor3 = Color3.fromRGB(200, 200, 200)
settingsFrame.Parent = script.Parent

local settingsLabel = Instance.new("TextLabel")
settingsLabel.Text = "Налаштування"
settingsLabel.Size = UDim2.new(1, 0, 0.2, 0)
settingsLabel.Parent = settingsFrame

-- функція анімації
local function toggleMenu()
if menu.Visible or settingsFrame.Visible then
-- ховаємо будь-яке меню
local active = menu.Visible and menu or settingsFrame
local tween = TweenService:Create(active, TweenInfo.new(0.3), {Size = UDim2.new(0,0,0,0)})
tween:Play()
tween.Completed:Connect(function()
active.Visible = false
active.Size = UDim2.new(0.3,0,0.4,0)
end)
else
menu.Size = UDim2.new(0,0,0,0)
menu.Visible = true
local tween = TweenService:Create(menu, TweenInfo.new(0.3), {Size = UDim2.new(0.3, 0, 0.4, 0)})
tween:Play()
end
end

UIS.InputBegan:Connect(function(input, gameProcessed)
if gameProcessed then return end
if input.KeyCode == Enum.KeyCode.M then
toggleMenu()
end
end)

script.Parent.MainFrame.PlayButton.MouseButton1Click:Connect(function()
menu.Visible = false
-- телепортуй або що завгодно
end)

script.Parent.MainFrame.SettingsButton.MouseButton1Click:Connect(function()
menu.Visible = false
settingsFrame.Size = UDim2.new(0,0,0,0)
settingsFrame.Visible = true
local tween = TweenService:Create(settingsFrame, TweenInfo.new(0.3), {Size = UDim2.new(0.3,0,0.4,0)})
tween:Play()
end)

script.Parent.MainFrame.ExitButton.MouseButton1Click:Connect(function()
game:Shutdown()
end)