How do I make this GUI menu fade out?

You can try this:

local Test = script.Parent.Frame

for i = 1,10 do
Y += 0.1
Test.BackgroundTransparency += 0.1
wait(0.01)
end

Try using a global function (in a module would be good). Like this:

local function tweenTransparency
(child : GuiObject,length : number,start : number,finish : number,pause : boolean)

	local Tween = nil;
	local Info = TweenInfo.new(length);
	if child:IsA("TextLabel") or child:IsA("TextButton") then
		Tween = game:GetService("TweenService"):Create(child,Info,{TextTransparency=finish,TextStrokeTransparency=finish});
	elseif child:IsA("TextBox") then
		Tween = game:GetService("TweenService"):Create(child,Info,{TextTransparency=finish,TextStrokeTransparency=finish,BackgroundTransparency=finish});
	elseif child:IsA("ImageLabel") or child:IsA("ImageButton") then
		Tween = game:GetService("TweenService"):Create(child,Info,{ImageTransparency=finish});
	elseif child:IsA("UIStroke") then
		Tween = game:GetService("TweenService"):Create(child,Info,{Transparency=finish});
	elseif child:IsA("Frame") or child:IsA("ScrollingFrame") then
		Tween = game:GetService("TweenService"):Create(child,Info,{BackgroundTransparency=finish});
	elseif child:IsA("ViewportFrame") then
		Tween = game:GetService("TweenService"):Create(child,Info,{BackgroundTransparency=finish,ImageTransparency=finish});
	end

	if Tween ~= nil then

		Tween:Play();

		pause = pause or false;
		if pause == true then
			Tween.Completed:Wait();
		end

		Tween.Completed:Connect(function()
			Tween:Destroy();
		end)

	end

	Info = nil;

end

function TweenFade(object: GuiObject, length : number, fadeIn : boolean)

	length = length or 1;
	local Tween = nil;
	fadeIn = fadeIn or false;
	local end_transp = 0;
	if fadeIn == false then end_transp = 1; end
	for _, child in pairs(object:GetDescendants()) do
		
		tweenTransparency(child,length,0,end_transp);
		
	end
	
	tweenTransparency(object,length,0,end_transp);
	
end

You can call it using:

local guiToFade = theScreenYouShowed;
TweenFade(guiToFade,2,false); -- 2 second fade, last param=false will fadeout, =true will fade in, just make sure the transparency is set to invisible before you fade in, and that it's visible before you fade out
1 Like