Top.Mail.Ru
Ответы

Проблема со скриптом в роблокс студио

мой скрипт должен обновлять текст на 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

По дате
По рейтингу
Аватар пользователя
Мыслитель
1мес

Проблема:StarterGui используется для начальной настройки интерфейса, но не для реального GUI игрока. Нужно обращаться к PlayerGui, а также убедиться, что скрипт является LocalScript.

Исправленный код:

1234567891011121314151617
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  

Что изменилось:

  1. Скрипт должен быть LocalScript (перетащите его в StarterGui или PlayerGui).

  2. Используйте PlayerGui, а не StarterGui.

  3. Добавлено WaitForChild() для избежания ошибок при загрузке.

Аватар пользователя
Новичок
1мес

Все что находится в 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

все, должно работать