Остров звёзд: интерфейс и финальная проверка
Покажите монеты, победы и статус сохранения; проверьте готовую игру вдвоём.
Завершённая учебная игра с экранным счётом, магазином, препятствиями и понятным состоянием сохранения.
1. Подготовьте объект
Где разместить: StarterPlayer → StarterPlayerScripts → IslandHUD (LocalScript)
ServerScriptService
IslandWorldBuilder (Script из урока 96)
IslandGameServer (Script из урока 97)
StarterPlayer
StarterPlayerScripts
IslandHUD (LocalScript)- Сохраните скрипты из уроков 96 и 97.
- В StarterPlayer → StarterPlayerScripts добавьте LocalScript IslandHUD.
- Вставьте код ниже, нажмите Play. Слева появятся монеты, победы и статус сохранения.
- Соберите четыре звезды, купите ускорение, дождитесь завершения эффекта.
- Пройдите лаву, коснитесь чекпоинта, погибните и проверьте точку возрождения.
- Дойдите до финиша: начислится одна победа и 30 монет. Повторное касание не даёт вторую награду в той же сессии.
- В Roblox Studio запустите Test → 2 Players. Монеты и покупки должны быть раздельными, звезда должна доставаться только одному игроку за цикл.
- Проверку сохранения выполняйте в отдельной опубликованной тестовой игре с разрешённым API Services; при ошибке смотрите статус «Только эта сессия» или «Ошибка сохранения».
2. Вставьте код
-- LocalScript: StarterPlayer/StarterPlayerScripts/IslandHUD
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local stats = player:WaitForChild("leaderstats")
local coins = stats:WaitForChild("Coins")
local wins = stats:WaitForChild("Wins")
local gui = Instance.new("ScreenGui")
gui.Name = "IslandHUD"
gui.ResetOnSpawn = false
gui.Parent = player:WaitForChild("PlayerGui")
local function label(name, y, height, color)
local item = Instance.new("TextLabel")
item.Name = name
item.Size = UDim2.new(0, 290, 0, height)
item.Position = UDim2.new(0, 16, 0, y)
item.BackgroundColor3 = Color3.fromRGB(24, 41, 69)
item.BackgroundTransparency = 0.12
item.TextColor3 = color
item.TextScaled = true
item.Font = Enum.Font.GothamBold
item.Parent = gui
return item
end
local score = label("Score", 16, 45, Color3.fromRGB(255, 224, 121))
local save = label("SaveStatus", 66, 32, Color3.fromRGB(205, 235, 255))
local notice = label("Notice", 105, 40, Color3.fromRGB(147, 255, 197))
notice.Visible = false
local function refreshScore()
score.Text = "Монеты: " .. coins.Value .. " Победы: " .. wins.Value
end
local function refreshSave()
save.Text = "Данные: " .. tostring(player:GetAttribute("IslandSaveStatus") or "Загрузка")
end
local noticeId = 0
local function refreshNotice()
noticeId += 1
local thisNotice = noticeId
notice.Text = tostring(player:GetAttribute("IslandNotice") or "")
notice.Visible = notice.Text ~= ""
task.delay(3.5, function()
if thisNotice == noticeId then notice.Visible = false end
end)
end
coins.Changed:Connect(refreshScore)
wins.Changed:Connect(refreshScore)
player:GetAttributeChangedSignal("IslandSaveStatus"):Connect(refreshSave)
player:GetAttributeChangedSignal("IslandNoticeNumber"):Connect(refreshNotice)
refreshScore()
refreshSave()
3. Проверьте в игре
Нажмите Play в Roblox Studio и проверьте действие механики. Если механика не работает, откройте окно Output и проверьте тип скрипта, его расположение и названия объектов.
Когда проверите механику в Roblox Studio, отметьте практику как выполненную. Отметка хранится только в этом браузере, не в личном кабинете.
Добавляйте механики по одной и проверяйте окно Output. Не создавайте несколько одинаковых систем монет или интерфейсов; скрипты, меняющие WalkSpeed, прыжок или освещение, могут влиять друг на друга.
Измените цвета и положение интерфейса.
Добавьте сообщение о том, сколько монет осталось до покупки.
Создайте собственную тематическую карту с теми же тремя скриптами.
4. Проверьте себя
Что означает статус «Только эта сессия»?
HUD — именно LocalScript в StarterPlayerScripts. Если счётчик не появился, проверьте leaderstats и Output. Два скрипта с названием IslandHUD создадут два интерфейса. Для сохранения нужна опубликованная тестовая игра с доступом к DataStore.