Створнення Прогрес-Бару

🎨 1. Створення UI елементів (в Explorer):

  1. У StarterGui створи ScreenGui

  2. Всередині ScreenGui створи Frame – це буде фон прогрес-бара

  3. Всередині цього Frame створи ще один Frame – це буде заповнення прогресу

📌 Назви для зручності:

  • Frame (фон) — ProgressBarBackground

  • внутрішній FrameProgressFill

🔧 Налаштуй стилі:

  • У ProgressBarBackground задай розміри, наприклад: Size = {0.4, 0}, {0.05, 0} (тобто 40% ширини екрана, 5% висоти)

  • ProgressFill задай AnchorPoint = (0,0) і Position = (0,0)

  • Колір заливки: яскравіший, наприклад, зелений

  • У ProgressFill постав Size = {0, 0}, {1, 0} – ширина буде змінюватися динамічно


🧠 2. Скрипт для зміни прогресу:

Додай LocalScript в ScreenGui або в сам прогрес-бар.

local fill = script.Parent:WaitForChild("ProgressBarBackground"):WaitForChild("ProgressFill") -- значення прогресу (0 до 1) local progress = 0 -- приклад оновлення прогрес-бара кожні 0.1 секунди while progress < 1 do wait(0.1) progress += 0.05 fill.Size = UDim2.new(progress, 0, 1, 0) end

🔁 Альтернатива: Прогрес за дією (наприклад, збирання предметів)

Якщо ти хочеш, щоб прогрес заповнювався коли гравець щось збирає — просто обчислюй progress як:

local collected = player.leaderstats.Collected.Value local max = 20 local progress = math.clamp(collected / max, 0, 1)

І оновлюй fill.Size = UDim2.new(progress, 0, 1, 0) щоразу, коли значення змінюється.

🔄 Додамо :WaitForChild замість FindFirstChild, щоб дочекатися появи об’єктів:

local Players = game:GetService("Players") local player = Players.LocalPlayer local fill = script.Parent:WaitForChild("ProgressBarBackground"):WaitForChild("ProgressFill") local leaderstats = player:WaitForChild("leaderstats") local collected = leaderstats:WaitForChild("Collected") local max = 20 local function updateProgress() local progress = math.clamp(collected.Value / max, 0, 1) fill.Size = UDim2.new(progress, 0, 1, 0) end -- Оновлення при зміні значення collected.Changed:Connect(updateProgress) -- Початкове оновлення updateProgress()

✅ Що ми зробили:

  • WaitForChild гарантує, що leaderstats і Collected точно завантажаться, перш ніж ми до них звернемося.

  • collected.Changed:Connect(...) означає, що прогрес оновлюється автоматично, коли значення змінюється.

  • Викликаємо updateProgress() один раз спочатку, щоб відразу показати актуальний прогрес.