- Home /
button reapats whats in its code
as i said in the title in the buttons code it finds anything and uses it and repeats it even when i don't press the button it happens when i start the game can you fix my code please and thank you. var Menu : boolean = true;
var SettingsBox : boolean = false; var MenuSkin : GUIStyle; function OnGUI() { var groupWidth = 500; var groupHeight = 500;
var screenWidth = Screen.width;
var screenHeight = Screen.height;
var groupX = ( screenWidth - groupWidth ) / 2;
var groupY = ( screenHeight - groupHeight ) / 2;
GUI.BeginGroup( Rect( groupX, groupY, groupWidth, groupHeight ) );
if ( Menu )
{
if ( GUI.Button( Rect( 150, 200, 200, 50 ), "Log In", MenuSkin));
{
}
if ( GUI.Button( Rect( 150, 260, 200, 50 ), "Settings", MenuSkin));
{
Menu = true;
SettingsBox = false;
}
GUI.Button( Rect( 150, 320, 200, 50 ), "Quit", MenuSkin);
{
Application.Quit();
}
if ( SettingsBox )
{
GUI.Box (Rect ( 0, 150, 500, 300 ), "Setings");
if ( GUI.Button( Rect( 400, 400, 60, 30 ), "Return" ) );
{
Menu = true;
SettingsBox = false;
}
}
}
GUI.EndGroup();
}
Answer by NoseKills · Jun 07, 2014 at 10:04 AM
Don't put semicolons at the end of "if" clauses. The "if" applies only until the semicolon in that case, so all your "if" clauses are effectively empty in this code, and as you said, all the other stuff happens unconditionally all the time.
Secondly, the "Quit" button is not even inside an "if" clause, so all it does is draw the button.
so
if ( GUI.Button( Rect( 150, 260, 200, 50 ), "Settings", MenuSkin))
{
Menu = true;
SettingsBox = false;
}
instead of
if ( GUI.Button( Rect( 150, 260, 200, 50 ), "Settings", MenuSkin));
{
Menu = true;
SettingsBox = false;
}
You can write "if" with or without the curly bracets
if (condition) // no opening curly bracket -> compiler ends the if block in the next semicolon it finds
value = false; // this is inside the "if" block
value2 = true; // this is outside the "if"
In your code the compiler reads the if blocks like above, only there's nothing between the if(condidition)
and the next semicolon after it
Or you can write "if" clauses with curly brackets
if (condition)
{ // opening curly bracket -> compiler ends the if block in the matching closing curly bracket
value = false; // this is inside the "if" block
value2 = true; // curly brackets enable multiple lines inside "if"
}
value3 = true; // this is outside the "if"
Answer by andrew-furlyk · Jun 07, 2014 at 11:03 AM
thank you you explanation was confusing but i some how understood it and fixed the problem thank you so much. :)
Your answer
Follow this Question
Related Questions
Use a key to open a GUI? 2 Answers
How can I make a GUI button be touch activated? 0 Answers
GUI Button Disappearing 1 Answer
Setting Scroll View Width GUILayout 1 Answer