Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

Why does this RemoteEvent only fire the second time this function is called?

Asked by 4 years ago

I am trying to change the text of a TextLabel with a RemoteEvent. Strangely, the text does change - but only the second time the round() function below is called. Does anyone know why this is happening or how to fix it?

Here are the relevant scripts. I also have a RemoteEvent called ChangeBigText. The first is RunGame, in ServerScriptStorage:

local ReplicatedStorage = game:GetService("ReplicatedStorage")

local remoteEvent = ReplicatedStorage:WaitForChild("ChangeBigText")

local function setup()
    [minigame code - shouldn't be relevant, but can add if needed]
end

local function round()
    remoteEvent:FireAllClients()

    [minigame code - shouldn't be relevant, but can add if needed]
end

setup()
while true do
    round()
end

The second is changeGUIscript, a LocalScript in StarterPlayerScripts

local ReplicatedStorage = game:GetService("ReplicatedStorage")

local remoteEvent = ReplicatedStorage:WaitForChild("ChangeBigText")

local player = game.Players.LocalPlayer

local screenGUI = player.PlayerGui:WaitForChild("ScreenGui")

local function changeGUI()
    print("test print")
    screenGUI.TextLabel.Text = "text change"
end

remoteEvent.OnClientEvent:Connect(changeGUI)

I've tried calling remoteEvent:FireAllClients() multiple times during round() and the text still only changes during the second call to round(), so it's definitely the second call to round() that lets the text change and not the second FireAllClients call. Any help would be much appreciated. Thank you for reading!

Answer this question