- Home /
Need help with toggle button
First of all sorry for posting the whole code here but if there is a chance that anyone of you would like to improve it overall may it be so. Now on to my problem. The thing is that the toggle buttons wont toggle and their values are always set to zero (the togglewata and togglebloom ones) so here is the code
var togglewata : boolean = true; var togglebloom : boolean = true; var optionsobject : GameObject; var togglewaterbool : boolean = true; var togglebloombool : boolean = true; var isinoptions = 0; var isingame = 0; function Awake(){ isinoptions=0; isingame = 0; }
function OnGUI () { //MAIN MENU if(isinoptions==0 ){ GUI.Box (Rect (10,10,100,90), "Loader Menu");
if (GUI.Button (Rect (105,40,110,20), "Load World")) { isinoptions=2; Application.LoadLevel ("world"); }
if (GUI.Button (Rect (105,70,110,20), "Lag-Free World")) {
Application.LoadLevel ("Waterless World");
}
if (GUI.Button (Rect (105,100,110,20), "Options")) { isinoptions=1; } if (GUI.Button (Rect (105,140,110,20), "Quit")) { Application.Quit(); }
} //OPTIONS MENU if(isinoptions==1){
togglewata = GUI.Toggle (Rect (25, 25, 100, 30), optionsobject.GetComponent("togglewaterbool"), "Water"); togglebloom = GUI.Toggle (Rect (25, 50, 100, 30), optionsobject.GetComponent("togglebloombool"), "Bloom"); if (GUI.Button (Rect (105,140,90,20), "Back")) { isinoptions = 0; }
}
}
function Update () { if (Input.GetKeyDown(KeyCode.P)) Application.CaptureScreenshot("Screenshot.png"); }
Answer by Cyclops · Jun 07, 2010 at 02:00 PM
Personally, I think it's better to store the toggle values in a separate array. If you don't mind coding it that way, here's another Answer that has full code: How can I setup a series of toggle buttons?
And another thing I noticed, is that you're not giving the saved toggle value to the Toggle button code (again, see the other Answer for an example of how it's done), so the button will never change. You have to tell the Toggle function, what value to use every time you call it. For example, I think this should do it (haven't tested it):
hasWater = GUI.Toggle (Rect (25, 25, 100, 30), hasWater, "Water");
Update: minor point, but to follow good naming practices, I'd rename the Booleans, as above for example, to hasX.
aha and should i replace togglewata with optionsobject.GetComponent("togglewaterbool") because thats where i want to store my values
okay your code needed a little tweaking and it was good to go thanks a lot
@yosss, hm, yeah, I didn't really think about it, but you do have two Booleans that are almost identical, you really only need one per value. And no, there shouldn't be a GetComponent at all - just use the Boolean value in the Toggle call, and assign the return value back to the Boolean.
Your answer
Follow this Question
Related Questions
GUI window help 1 Answer
Whats wrong with my GUI.Toggle? 2 Answers
Is there a better way to access the single active Toggle in a ToggleGroup? 4 Answers
GUI window popup button 1 Answer
Toggling multiple button states 2 Answers