Moon's Main Menu UI

Hi! This is my first resource I’ve uploaded to the DevForum so I apologize for the sloppiness :sweat_smile:.

I’ve made this very simple, yet effective Gui that can be used for Main Menu’s in games.

Here’s a video of it in action.


It’s easily editable and the only thing you need to code is what the button does itself.

Model Link

Credit is appreciated but never required!
Please enjoy

81 Likes

This is very smooth! It would go really well in a simplistic game, this can also be really useful for scripting beginners!

5 Likes

Looks very cool! I have some suggestions for this gui:

  1. How about an intro sequence? For example, 2 frames, one being on top, and the other one being on the bottom; here’s what i mean:
    image
    The bottom frame slides down, and the top frame slides up using the quad/sine easingstyle;
  1. After the intro’s done, how about a set-up camera position? That would look very cool; here’s what i mean:

Would definitely like to see in the future!

8 Likes

Great idea! Will Definitely do in the future!

1 Like

Update 1

Added a title screen and a Camera.


Model

11 Likes


what

2 Likes

Moderated for some reason

1 Like

That’s odd, it was moderated cause the thumbnail was a picture of a dummy. The model has been updated and should hopefully be usable now.

2 Likes

To make it better, you could make it so that the players wouldn’t be able to move and they spawn somewhere like a spawn box and they spawn on a part somewhere on the baseplate

Thank you so much! :smile:
With the menu you made, and some popups I couldn’t create myself I made this:

14 Likes

That’s awesome!! Thanks so much for using

3 Likes

evade inspired i see
image

2 Likes

can you tell me how i could close the gui with the “New game” button? i cant seem to do it

2 Likes

You could just set the Enabled Property to false.

Example below

local gui = script.Parent.Parent

local button = script.Parent

button.MouseButton1Click:Connect(function()
	gui.Enabled = false
end)
1 Like

I have done this but it appears that my camera is still in the same spot.

1 Like

Set the CameraType to Custom

local CurrentCamera = workspace.CurrentCamera

CurrentCamera.CameraType = Enum.CameraType.Custom

this did not work, any other ideas?

Set the camera type to custom, like @Mr_baconhair839 said, but also set the camerasubject to the player’s humanoid. You can do so, by:

workspace.CurrentCamera.CameraSubject = Player.Character.Humanoid

how would do i do this?

this is the script:

-- Let's Define a Few Important Variables first!
local button = script.Parent -- We define our button, which is a child to this script.
local description = button:WaitForChild("Description") -- Get's the description thats inside the button.
local tweenService = game:GetService("TweenService") -- This allows us to do smooth animations!
local tweenInfo = TweenInfo.new(0.35, Enum.EasingStyle.Quad) -- This is the info for our tweens. The first Int is the duration of time (in seconds) it takes to finish a tween and the second Value is the EasingStyle. You can play around with both and see if you find something you like!


-- Now Let's program the button!
button.MouseEnter:Connect(function() -- The code inside this function occurs whenever the players mouse is over the button. Let's make some nice animations.
	tweenService:Create(description, tweenInfo, {TextTransparency = 0}):Play() -- Makes the description text visible.
	button:TweenSize(UDim2.new(0.209, 0, 0.057, 0), Enum.EasingDirection.InOut, Enum.EasingStyle.Quad, 0.1, true) -- tweens the size of the button and makes it bigger
end)

button.MouseLeave:Connect(function() -- The code inside this function occurs whenever the players mouse is over the button, but then leaves.
	tweenService:Create(description, tweenInfo, {TextTransparency = 1}):Play() -- Makes the description text invisible.
	button:TweenSize(UDim2.new(0.202, 0, 0.051, 0), Enum.EasingDirection.InOut, Enum.EasingStyle.Quad, 0.1, true) -- tweens the size of the button and makes it the base size of what it was
end)

button.MouseButton1Click:Connect(function() -- The code inside this function occurs whenever the player clicks the button.
	local clickSFX = script.Parent.Parent.Click
	-- clickSFX:Play() -- OPTIONAL, UNCOMMENT IF YOU WANT A SOUND TO PLAY WHEN THE PLAYER CLICKS THE BUTTON.
	local CurrentCamera = workspace.CurrentCamera
	workspace.CurrentCamera.CameraSubject = game.Players.LocalPlayer.Character
	CurrentCamera.CameraType = Enum.CameraType.Custom
end)

it doesnt work when i click the button.

You forgot the “.Humanoid”. In the script, it won’t work with the “.Character” due to it being a model, and not a part/humanoid.