Roblox ScreenGUI 问题
Roblox ScreenGUI problems
我想知道我是否必须做些什么才能在游戏中更改 GUI 的文本。因为我的问题是我正在制作一个经过 "Round in progress"、"Game Over"、"Intermission"、"Voting in progress," 然后永远重复的计时器。但是文本本身卡在了 Round In Progress 上。在整个计时器期间,标签属性中的文本值会发生变化,但屏幕 GUI 上的文本不会发生变化
我每次都用同样的方法更改文本:
status.Text = "Game over"
然后我会让计时器走大约 5 秒,然后再更改它:
status.Text = "Intermission"
以此类推...
这是完整的代码:
local rep = game:GetService("ReplicatedStorage")
local players = game:GetService("Players")
local minutesvalue = rep:WaitForChild("Minutes")
local secondsvalue = rep:WaitForChild("Seconds")
local minutes = 0 --minutes
local seconds = 11 --seconds
local status = game.StarterGui.Status:WaitForChild("Status")
while true do
status.Text = "Round In Progress"
minutesvalue.Value = minutes
secondsvalue.Value = seconds
repeat
if secondsvalue.Value <= 0 then
minutesvalue.Value = minutesvalue.Value - 1
secondsvalue.Value = 59
else
secondsvalue.Value = secondsvalue.Value - 1
end
wait(1)
until secondsvalue.Value <= 0 and minutesvalue.Value <= 0
status.Text = "Game Over!"
wait(5)
status.Text = "Intermission"
secondsvalue.Value = 15
repeat
secondsvalue.Value = secondsvalue.Value - 1
wait(1)
until secondsvalue.Value <= 0 and minutesvalue.Value <= 0
status.Text = "Voting In Progress"
secondsvalue.Value = 10
repeat
secondsvalue.Value = secondsvalue.Value - 1
wait(1)
until secondsvalue.Value <= 0 and minutesvalue.Value <= 0
status.Text = "Loading Map..."
end
计时器和状态是独立的 GUI。
我把它分开了,希望它能起作用,但它没有。
因为你是在 StarterGui 中做的,我敢肯定,在播放器 PlayerGui 中做所以替换:
local status = game.StarterGui.Status:WaitForChild("Status")
与:
local status = players[plr].PlayerGui:WaitForChild("Status")
(定义 plr)
我想知道我是否必须做些什么才能在游戏中更改 GUI 的文本。因为我的问题是我正在制作一个经过 "Round in progress"、"Game Over"、"Intermission"、"Voting in progress," 然后永远重复的计时器。但是文本本身卡在了 Round In Progress 上。在整个计时器期间,标签属性中的文本值会发生变化,但屏幕 GUI 上的文本不会发生变化
我每次都用同样的方法更改文本:
status.Text = "Game over"
然后我会让计时器走大约 5 秒,然后再更改它:
status.Text = "Intermission"
以此类推...
这是完整的代码:
local rep = game:GetService("ReplicatedStorage")
local players = game:GetService("Players")
local minutesvalue = rep:WaitForChild("Minutes")
local secondsvalue = rep:WaitForChild("Seconds")
local minutes = 0 --minutes
local seconds = 11 --seconds
local status = game.StarterGui.Status:WaitForChild("Status")
while true do
status.Text = "Round In Progress"
minutesvalue.Value = minutes
secondsvalue.Value = seconds
repeat
if secondsvalue.Value <= 0 then
minutesvalue.Value = minutesvalue.Value - 1
secondsvalue.Value = 59
else
secondsvalue.Value = secondsvalue.Value - 1
end
wait(1)
until secondsvalue.Value <= 0 and minutesvalue.Value <= 0
status.Text = "Game Over!"
wait(5)
status.Text = "Intermission"
secondsvalue.Value = 15
repeat
secondsvalue.Value = secondsvalue.Value - 1
wait(1)
until secondsvalue.Value <= 0 and minutesvalue.Value <= 0
status.Text = "Voting In Progress"
secondsvalue.Value = 10
repeat
secondsvalue.Value = secondsvalue.Value - 1
wait(1)
until secondsvalue.Value <= 0 and minutesvalue.Value <= 0
status.Text = "Loading Map..."
end
计时器和状态是独立的 GUI。 我把它分开了,希望它能起作用,但它没有。
因为你是在 StarterGui 中做的,我敢肯定,在播放器 PlayerGui 中做所以替换:
local status = game.StarterGui.Status:WaitForChild("Status")
与:
local status = players[plr].PlayerGui:WaitForChild("Status")
(定义 plr)