How to make a Main Menu

I do not know how the hell I am supposed to make a main menu. Can you please tell me how, and please give me a script or whatever you need and tell me the principles of making menus. I need buttons that navigate the players to the levels, and another one explaining the controls. I also want a bunch of text explaining the background story of the game when the player clicks on the levels. I also want the levels 2 and on to be unavailable unless the player clears level 1. I am a beginner.

Thanks in advance!!

to make buttons, text and textures you use GUI, this is a tutorial on the basics of GUI's:

http://www.youtube.com/watch?v=JEMdbT7HWqw

sometimes these links don't seem to work but this is a link to the unity script reference for GUI's:

file:///Applications/Unity/Unity.app/Contents/Documentation/Documentation/ScriptReference/GUI.html

(you probably have to copy and paste the above link)

The main things you need are:

GUI.Label mainly text with no border or background

GUI.DrawTexture a texture

GUI.Button a button that can be clicked

hope this helps

Scribe

Try the tutorials Tornado Twins:

27 - How to create a Main Menu in Unity3D

http://www.youtube.com/watch?v=8Q5y7pHWdlo&playnext=1&list=PL11F87EB39F84E292

Hey Use This Script! B.T.W its c++

public GUISkin guiSkin;
public Texture2D background, LOGO;
public bool DragWindow = false;
public string levelToLoadWhenClickedPlay = "";
public string[] AboutTextLines = new string[0];


private string clicked = "", MessageDisplayOnAbout = "About 

";
private Rect WindowRect = new Rect((Screen.width / 2) - 100, Screen.height / 2, 200, 200);
private float volume = 1.0f;

private void Start()
{
	for (int x = 0; x < AboutTextLines.Length;x++ )
	{
		MessageDisplayOnAbout += AboutTextLines[x] + " 

";
}
MessageDisplayOnAbout += “Press Esc To Go Back”;
}

private void OnGUI()
{
	if (background != null)
		GUI.DrawTexture(new Rect(0,0,Screen.width , Screen.height),background);
	if (LOGO != null && clicked != "about")
		GUI.DrawTexture(new Rect((Screen.width / 2) - 100, 30, 200, 200), LOGO);
	
	GUI.skin = guiSkin;
	if (clicked == "")
	{
		WindowRect = GUI.Window(0, WindowRect, menuFunc, "Main Menu");
	}
	else if (clicked == "options")
	{
		WindowRect = GUI.Window(1, WindowRect, optionsFunc, "Options");
	}
	else if (clicked == "about")
	{
		GUI.Box(new Rect (0,0,Screen.width,Screen.height), MessageDisplayOnAbout);
	}else if (clicked == "resolution")
	{
		GUILayout.BeginVertical();
		for (int x = 0; x < Screen.resolutions.Length;x++ )
		{
			if (GUILayout.Button(Screen.resolutions[x].width + "X" + Screen.resolutions[x].height))
			{
				Screen.SetResolution(Screen.resolutions[x].width,Screen.resolutions[x].height,true);
			}
		}
		GUILayout.EndVertical();
		GUILayout.BeginHorizontal();
		if (GUILayout.Button("Back"))
		{
			clicked = "options";
		}
		GUILayout.EndHorizontal();
	}
}

private void optionsFunc(int id)
{
	if (GUILayout.Button("Resolution"))
	{
		clicked = "resolution";
	}
	GUILayout.Box("Volume");
	volume = GUILayout.HorizontalSlider(volume ,0.0f,1.0f);
	AudioListener.volume = volume;
	if (GUILayout.Button("Back"))
	{
		clicked = "";
	}
	if (DragWindow)
		GUI.DragWindow(new Rect (0,0,Screen.width,Screen.height));
}

private void menuFunc(int id)
{
	//buttons 
	if (GUILayout.Button("Play Game"))
	{
		//play game is clicked
		Application.LoadLevel(1);
	}
	if (GUILayout.Button("Options"))
	{
		clicked = "options";
	}
	if (GUILayout.Button("About"))
	{
		clicked = "about";
	}
	if (GUILayout.Button("Quit Game"))
	{
		Application.Quit();
	}
	if (DragWindow)
		GUI.DragWindow(new Rect(0, 0, Screen.width, Screen.height));
}

private void Update()
{
	if (clicked == "about" && Input.GetKey (KeyCode.Escape))
		clicked = "";
}

}