x


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");
}
more ▼

asked Jun 07 '10 at 01:28 PM

yosss gravatar image

yosss
63 3 3 8

(comments are locked)
10|3000 characters needed characters left

1 answer: sort voted first

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.

more ▼

answered Jun 07 '10 at 02:00 PM

Cyclops gravatar image

Cyclops
7.1k 33 63 115

aha and should i replace togglewata with optionsobject.GetComponent("togglewaterbool") because thats where i want to store my values

Jun 07 '10 at 02:12 PM yosss

okay your code needed a little tweaking and it was good to go thanks a lot

Jun 07 '10 at 02:18 PM yosss

@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.

Jun 07 '10 at 02:32 PM Cyclops
(comments are locked)
10|3000 characters needed characters left
Your answer
toggle preview:

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Topics:

x3813
x820
x169

asked: Jun 07 '10 at 01:28 PM

Seen: 2372 times

Last Updated: Jun 07 '10 at 01:28 PM