Монеты и счётчик на экране
Сервер считает монеты, клиент отображает результат.
Сбор монеты увеличивает счёт и обновляет интерфейс.
1. Подготовьте объект
Где разместить: Создайте объекты точно по схеме в инструкции.
Workspace
Coin (Part)
CoinServer (Script)
StarterPlayer
StarterPlayerScripts
CoinHud (LocalScript)
Создайте Anchored Part Coin с CanCollide=false и CanTouch=true. Добавьте Script в Coin. LocalScript разместите в StarterPlayerScripts. Эта практика самостоятельно создаёт Coins, если другие скрипты его ещё не создают.
Это пути для скриптов из блоков кода ниже. Остальные объекты создайте по инструкции.
├── Workspace
│ └── Coin
│ └── CoinServer (Script)
└── StarterPlayer
└── StarterPlayerScripts
└── CoinHud (LocalScript)2. Вставьте код
local Players = game:GetService("Players")
local coin = script.Parent
local busy = false
local function ensureCoins(player)
local stats = player:FindFirstChild("leaderstats")
if not stats then
stats = Instance.new("Folder")
stats.Name = "leaderstats"
stats.Parent = player
end
local coins = stats:FindFirstChild("Coins")
if not coins then
coins = Instance.new("IntValue")
coins.Name = "Coins"
coins.Parent = stats
end
return coins
end
coin.Touched:Connect(function(hit)
local character = hit:FindFirstAncestorOfClass("Model")
local player = character and Players:GetPlayerFromCharacter(character)
if not player or busy then return end
busy = true
ensureCoins(player).Value += 1
coin.Transparency = 1
coin.CanTouch = false
task.wait(5)
coin.Transparency = 0
coin.CanTouch = true
busy = false
end)local Players = game:GetService("Players")
local player = Players.LocalPlayer
local gui = Instance.new("ScreenGui")
gui.Name = "IgroCoinHud"
gui.ResetOnSpawn = false
gui.Parent = player:WaitForChild("PlayerGui")
local text = Instance.new("TextLabel")
text.Size = UDim2.fromOffset(180, 44)
text.Position = UDim2.fromOffset(15, 15)
text.BackgroundColor3 = Color3.fromRGB(25, 40, 70)
text.TextColor3 = Color3.new(1, 1, 1)
text.TextScaled = true
text.Parent = gui
local stats = player:WaitForChild("leaderstats")
local coins = stats:WaitForChild("Coins")
local function update() text.Text = "Монеты: " .. coins.Value end
coins:GetPropertyChangedSignal("Value"):Connect(update)
update()3. Проверьте в игре
Нажмите Play в Roblox Studio и проверьте действие механики. Если механика не работает, откройте окно Output и проверьте тип скрипта, его расположение и названия объектов.
Когда проверите механику в Roblox Studio, отметьте практику как выполненную. Отметка хранится только в этом браузере, не в личном кабинете.
Добавляйте механики по одной и проверяйте окно Output. Не создавайте несколько одинаковых систем монет или интерфейсов; скрипты, меняющие WalkSpeed, прыжок или освещение, могут влиять друг на друга.
Измените награду с одной монеты на три.
Разместите пять монет на уровне.
Постройте маршрут сборщика сокровищ.
4. Проверьте себя
Какой скрипт изменяет Coins?
Если у вас уже есть система Coins, оставьте одну систему создания leaderstats. Значение в этой практике не сохраняется после выхода.