GUI Fade Loop Issue

So I’m trying to make a GUI loop in which the background and an imagelabel tween together between different images, kind of like GTA’s loading screen. However, whenever I try it it doesn’t work, or it just tweens the same frames.

Here’s the code:

while true do
    local randomEvent = math.random(1, 5)
    if randomEvent == 1 then
		wait()
		char.Image = char1
		char.ImageColor3 = Color3.new(192, 255, 205)
		local CHARAppear1 = ts:Create(char, AppAnimation, Appear)
		CHARAppear1:Play()
                
        background.Image = one
		local BGAppear1 = ts:Create(background, AppAnimation, Appear)
		BGAppear1:Play()

		wait(3)
		local CharDis1 = ts:Create(char, DisAnimation, Disappear)
		CharDis1:Play()
		local BGDis1 = ts:Create(background, DisAnimation, Disappear)
		BGDis1:Play()
  end

	if randomEvent == 2 then
		wait()
		char.Image = char2
		char.ImageColor3 = Color3.new(255, 255, 255)
		local CHARAppear2 = ts:Create(char, AppAnimation, Appear)
		CHARAppear2:Play()

		background.Image = two
		local BGAppear2 = ts:Create(background, AppAnimation, Appear)
		BGAppear2:Play()

		wait(3)
		local CharDis2 = ts:Create(char, DisAnimation, Disappear)
		CharDis2:Play()
		local BGDis2 = ts:Create(background, DisAnimation, Disappear)
		BGDis2:Play()
	end

	if randomEvent == 3 then
		wait()
		char.Image = char3
		char.ImageColor3 = Color3.new(255, 255, 255)
		local CHARAppear3 = ts:Create(char, AppAnimation, Appear)
		CHARAppear3:Play()

		background.Image = three
		local BGAppear3 = ts:Create(background, AppAnimation, Appear)
		BGAppear3:Play()

		wait(3)
		local CharDis3 = ts:Create(char, DisAnimation, Disappear)
		CharDis3:Play()
		local BGDis3 = ts:Create(background, DisAnimation, Disappear)
		BGDis3:Play()
	end

	if randomEvent == 4 then
		wait()
		char.Image = char4
		char.ImageColor3 = Color3.new(255, 255, 255)
		local CHARAppear4 = ts:Create(char, AppAnimation, Appear)
		CHARAppear4:Play()

		background.Image = four
		local BGAppear4 = ts:Create(background, AppAnimation, Appear)
		BGAppear4:Play()

		wait(3)
		local CharDis4 = ts:Create(char, DisAnimation, Disappear)
		CharDis4:Play()
		local BGDis4 = ts:Create(background, DisAnimation, Disappear)
		BGDis4:Play()
	end

	if randomEvent == 5 then
		wait()
		char.Image = char5
		char.ImageColor3 = Color3.new(254, 175, 250)
		local CHARAppear5 = ts:Create(char, AppAnimation, Appear)
		CHARAppear5:Play()

		background.Image = five
		local BGAppear5 = ts:Create(background, AppAnimation, Appear)
		BGAppear5:Play()

		wait(3)
		local CharDis5 = ts:Create(char, DisAnimation, Disappear)
		CharDis5:Play()
		local BGDis2 = ts:Create(background, DisAnimation, Disappear)
		BGDis2:Play()
	end

end

Could you share more of your code, specifically where you’re defining all the variables you’re using?

Also could you wrap your code in backticks

```
like this
```

local player = game:GetService("Players").LocalPlayer
local PlayerGui = player:WaitForChild('PlayerGui')
local MainMenuGUI = PlayerGui:WaitForChild('MainMenuGUI')

local MainMenuFrame = MainMenuGUI.MainMenuFrame
local LoadingScreen = MainMenuGUI.LoadingScreen
local ButtonFrame = MainMenuFrame.ButtonFrame
local label = MainMenuFrame.HeistLabel
local char = MainMenuFrame.character
local background = MainMenuFrame.background

char.BackgroundTransparency = 1

background.BackgroundTransparency = 0


local ts = game:GetService("TweenService")

--// Properties
local Appear = {
	ImageTransparency = 0 -- Image appear
}

local Disappear = {
	ImageTransparency = 1 -- Image disappear
}

local AppAnimation = TweenInfo.new(1,
	Enum.EasingStyle.Quart, 
	Enum.EasingDirection.Out, 
	1, 
	false)
local DisAnimation = TweenInfo.new(1,Enum.EasingStyle.Quart, Enum.EasingDirection.In, 1, false)

-- backgrounds

local one = "rbxassetid://10067564934"
local two = "rbxassetid://10067613295"
local three = "rbxassetid://10067758822"
local four = "rbxassetid://10067784503"
local five = "rbxassetid://10067844384"

-- char backgrounds

local char1 = "rbxassetid://10067721073" -- imgcolor3 = (192, 255, 205)
local char2 = "rbxassetid://10067669890"
local char3 = "rbxassetid://10067751526"
local char4 = "rbxassetid://10067775627"
local char5 = "rbxassetid://10067848635" -- imgcolor3 = (254, 175, 250)

entire script:

local player = game:GetService("Players").LocalPlayer
local PlayerGui = player:WaitForChild('PlayerGui')
local MainMenuGUI = PlayerGui:WaitForChild('MainMenuGUI')

local MainMenuFrame = MainMenuGUI.MainMenuFrame
local LoadingScreen = MainMenuGUI.LoadingScreen
local ButtonFrame = MainMenuFrame.ButtonFrame
local label = MainMenuFrame.HeistLabel
local char = MainMenuFrame.character
local background = MainMenuFrame.background

char.BackgroundTransparency = 1

background.BackgroundTransparency = 0


local ts = game:GetService("TweenService")

--// Properties
local Appear = {
	ImageTransparency = 0 -- Image appear
}

local Disappear = {
	ImageTransparency = 1 -- Image disappear
}

local AppAnimation = TweenInfo.new(1,
	Enum.EasingStyle.Quart, 
	Enum.EasingDirection.Out, 
	1, 
	false)
local DisAnimation = TweenInfo.new(1,Enum.EasingStyle.Quart, Enum.EasingDirection.In, 1, false)

-- backgrounds

local one = "rbxassetid://10067564934"
local two = "rbxassetid://10067613295"
local three = "rbxassetid://10067758822"
local four = "rbxassetid://10067784503"
local five = "rbxassetid://10067844384"

-- char backgrounds

local char1 = "rbxassetid://10067721073" -- imgcolor3 = (192, 255, 205)
local char2 = "rbxassetid://10067669890"
local char3 = "rbxassetid://10067751526"
local char4 = "rbxassetid://10067775627"
local char5 = "rbxassetid://10067848635" -- imgcolor3 = (254, 175, 250)


while true do
	local randomEvent = math.random(1, 5)
	if randomEvent == 1 then
		wait()
		char.Image = char1
		char.ImageColor3 = Color3.new(192, 255, 205)
		local CHARAppear1 = ts:Create(char, AppAnimation, Appear)
		CHARAppear1:Play()

		background.Image = one
		local BGAppear1 = ts:Create(background, AppAnimation, Appear)
		BGAppear1:Play()

		wait(3)
		local CharDis1 = ts:Create(char, DisAnimation, Disappear)
		CharDis1:Play()
		local BGDis1 = ts:Create(background, DisAnimation, Disappear)
		BGDis1:Play()
	end

	if randomEvent == 2 then
		wait()
		char.Image = char2
		char.ImageColor3 = Color3.new(255, 255, 255)
		local CHARAppear2 = ts:Create(char, AppAnimation, Appear)
		CHARAppear2:Play()

		background.Image = two
		local BGAppear2 = ts:Create(background, AppAnimation, Appear)
		BGAppear2:Play()

		wait(3)
		local CharDis2 = ts:Create(char, DisAnimation, Disappear)
		CharDis2:Play()
		local BGDis2 = ts:Create(background, DisAnimation, Disappear)
		BGDis2:Play()
	end

	if randomEvent == 3 then
		wait()
		char.Image = char3
		char.ImageColor3 = Color3.new(255, 255, 255)
		local CHARAppear3 = ts:Create(char, AppAnimation, Appear)
		CHARAppear3:Play()

		background.Image = three
		local BGAppear3 = ts:Create(background, AppAnimation, Appear)
		BGAppear3:Play()

		wait(3)
		local CharDis3 = ts:Create(char, DisAnimation, Disappear)
		CharDis3:Play()
		local BGDis3 = ts:Create(background, DisAnimation, Disappear)
		BGDis3:Play()
	end

	if randomEvent == 4 then
		wait()
		char.Image = char4
		char.ImageColor3 = Color3.new(255, 255, 255)
		local CHARAppear4 = ts:Create(char, AppAnimation, Appear)
		CHARAppear4:Play()

		background.Image = four
		local BGAppear4 = ts:Create(background, AppAnimation, Appear)
		BGAppear4:Play()

		wait(3)
		local CharDis4 = ts:Create(char, DisAnimation, Disappear)
		CharDis4:Play()
		local BGDis4 = ts:Create(background, DisAnimation, Disappear)
		BGDis4:Play()
	end

	if randomEvent == 5 then
		wait()
		char.Image = char5
		char.ImageColor3 = Color3.new(254, 175, 250)
		local CHARAppear5 = ts:Create(char, AppAnimation, Appear)
		CHARAppear5:Play()

		background.Image = five
		local BGAppear5 = ts:Create(background, AppAnimation, Appear)
		BGAppear5:Play()

		wait(3)
		local CharDis5 = ts:Create(char, DisAnimation, Disappear)
		CharDis5:Play()
		local BGDis2 = ts:Create(background, DisAnimation, Disappear)
		BGDis2:Play()
	end
	
	if LoadingScreen.Visible then
		break
	end
end

Thanks. What exactly do you want to happen, and what is happening instead?

Does it stay at the same transparency? if yes then I think this is the problem

i have it when a button is pressed loading screen is visible and this frame isnt