- Home /
(C#) GUI Buttons not working
I am trying to make a main menu from the built in GUI system.This is my first time doing this so I do not know that much about them. But anyways here is my problem.When I press the buttons they do not say that they have been clicked.
Here is my script.
using UnityEngine;
using System.Collections;
[ExecuteInEditMode]//Be seen in edit mode
public class MainMenu : MonoBehaviour
{
//Variables Start
//Private Variables
private bool ShowMainMenu = false;
private bool ShowSinglePlayer = false;
private bool ShowMultiPlayer = false;
private bool ShowOptions = false;
private bool ShowCredits = false;
private bool ShowSettings = false;
private bool ShowContollerSettings = false;
private bool ShowGraphicalSettings = false;
private bool ShowExit = false;
//Variables To make it in the middle
public Rect WindowPosition = new Rect(20,20, 120, 50);
public bool CenterWindow = true;
private Rect CurrentRect = new Rect(20,20, 120, 50);
//Varioables End
void Start()
{
CurrentRect = WindowPosition;
}
void OnGUI()
{
CenterWindow = true;
ShowMainMenu = true;
if(CenterWindow)
{
CurrentRect.x = (Screen.width * 0.5f) - (CurrentRect.width * 0.5f);
CurrentRect.y = (Screen.height * 0.5f) - (CurrentRect.height * 0.5f);
}
if(ShowMainMenu)
{
CurrentRect = GUILayout.Window(0, CurrentRect, MainMenuWindow, "Main Menu",GUILayout.MinHeight(Screen.height * 0.25f),GUILayout.MinWidth(Screen.width * 0.25f));
}
}
void MainMenuWindow(int windowID)
{
GUILayout.BeginVertical();
if(GUILayout.Button("Singleplayer"));
print("You are now in the singleplayer Window");
GUILayout.Space(2);
if(GUILayout.Button("Multiplayer"));
print("You are now in the Multiplayer Window");
GUILayout.Space(2);
if(GUILayout.Button("Options"));
GUILayout.Space(2);
if(GUILayout.Button("Credits"));
GUILayout.Space(2);
if(GUILayout.Button("About Us"));
GUILayout.Space(2);
if(GUILayout.Button("Quit"));
GUILayout.EndVertical();
}
I do not get any errors.The buttons say that they are clicked right when you press play. Please help me with this I am stuck.
Thanks Infinite Gamer
Answer by robertbu · Feb 03, 2014 at 03:54 AM
I'm not what you want to happen here, but you don't have any clause after all your 'if' statements. By having a ';' at the end of each 'if()', you are terminating the 'if()' statements with no possible action. Replace your 'MainMenuWindow' with this:
void MainMenuWindow(int windowID)
{
GUILayout.BeginVertical();
if(GUILayout.Button("Singleplayer")) Debug.Log ("Singleplayer");
//print("You are now in the singleplayer Window");
GUILayout.Space(2);
if(GUILayout.Button("Multiplayer")) Debug.Log ("Multiplayer");
//print("You are now in the Multiplayer Window");
GUILayout.Space(2);
if(GUILayout.Button("Options")) Debug.Log ("Options");
GUILayout.Space(2);
if(GUILayout.Button("Credits")) Debug.Log ("Credits");
GUILayout.Space(2);
if(GUILayout.Button("About Us")) Debug.Log ("About Us");
GUILayout.Space(2);
if(GUILayout.Button("Quit")) Debug.Log ("Quit");
GUILayout.EndVertical();
}
Your answer
Follow this Question
Related Questions
Multiple Cars not working 1 Answer
How to make minimap GUI stay put? 1 Answer
Not working gui buttons 1 Answer
Is there something wrong with my c# script? 1 Answer
Highscore GUI not working properly help 0 Answers