Проблема со скриптом в роблокс студио
мой скрипт должен обновлять текст на lable внутри screengui игрока но он его обновляет только 1 раз и все, что делать?
сам скрипт:
local button = script.Parent
local gui = button.Parent
local lable = game.StarterGui.ScreenGui.balance
local point = 2
local cd = 1
local function balance()
lable.Text = "points: " .. tostring(math.round(point))
end
while wait(cd) do
point += 1
balance()
print(point)
end
Проблема:StarterGui используется для начальной настройки интерфейса, но не для реального GUI игрока. Нужно обращаться к PlayerGui, а также убедиться, что скрипт является LocalScript.
Исправленный код:
local button = script.Parent
local player = game.Players.LocalPlayer
local gui = player.PlayerGui:WaitForChild("ScreenGui") -- Ожидание загрузки GUI
local label = gui:WaitForChild("balance") -- Убедитесь, что Label назван "balance"
local point = 2
local cd = 1
local function updateLabel()
label.Text = "points: " .. tostring(math.round(point))
end
while true do
wait(cd)
point += 1
updateLabel()
print(point)
end
Что изменилось:
Скрипт должен быть LocalScript (перетащите его в StarterGui или PlayerGui).
Используйте PlayerGui, а не StarterGui.
Добавлено WaitForChild() для избежания ошибок при загрузке.
Все что находится в game.StarterGui переносится в game.Players.LocalPlayer.PlayerGui, при начале игры
Если ты хочешь обновлять интерфейс игрока тогда надо использовать game.Players.LocalPlayer.PlayerGui
тоесть в твоем случае непонятно где находтся скрипт, если скрипт находстя в кнопке, что более вероятно то лучше сделать так:
local player = game.Players.LocalPlayer
local gui = player.PlayerGui
local button = script.Parent
local lable = gui:WaitForChild("ScreenGui"):WaitForChild("balance") -- ВаитФорЧайл значит что ждет пока прогрузиться ребенок.
local point = 2
local cd = 1
local function balance()
lable.Text = "points: " .. tostring(math.round(point))
end
while wait(cd) do
point += 1
balance()
print(point)
end
все, должно работать