Цель
Показать экран завершения, когда сервер подтвердил финиш.
Подготовка и расположение объектов
ReplicatedStorage → RemoteEvent FinishNotice; StarterGui → ScreenGui → Frame WinPanel (Visible=false), TextLabel ResultLabel; LocalScript внутри ScreenGui. ServerScript должен сам проверять достижение финиша.
Пошаговая работа
- Создай RemoteEvent с именем FinishNotice.
- Собери WinPanel и ResultLabel, затем добавь LocalScript.
- В серверном скрипте после проверки финиша вызови FinishNotice:FireClient(player, finishTime).
Код Luau
-- LocalScript внутри ScreenGui
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local event = ReplicatedStorage:WaitForChild("FinishNotice")
local panel = script.Parent:WaitForChild("WinPanel")
local result = panel:WaitForChild("ResultLabel")
panel.Visible = false
event.OnClientEvent:Connect(function(seconds)
if typeof(seconds) ~= "number" then return end
result.Text = string.format("Финиш! Время: %.1f с", seconds)
panel.Visible = true
end)
-- В СУЩЕСТВУЮЩЕМ СЕРВЕРНОМ скрипте, после проверки маршрута:
-- ReplicatedStorage.FinishNotice:FireClient(player, finishTime)Проверяем результат
Экран победы появляется только после сообщения от сервера.
Частая ошибка
Отправка FinishNotice с клиента не должна означать победу: сервер сам проверяет прохождение.
Усложнение
Добавь кнопку, скрывающую окно, и анимацию медали.
Для преподавателя
Проверь результат в Play и в эмуляторе мобильного устройства. Сделай собственные скриншоты Roblox Studio перед публикацией.
