On mouse down switch on / off

Hi guys.

i have ran into yet a problem.

i want to make a object button that changes a bool when its clicked.
problem is that i only get the log: Buildmode = true.

here is my current code for it:

public bool buildmode;  void OnMouseDown()
{
	//if this is a buildmodeSwitch, im having different switches later.
	if (buildmodeSwitch)
	{	
		//then, if buildmode = true
		if (buildmode == true)
		{
			//then set buildmode to false
			buildmode = false;
			Debug.Log("Buildmode = false");
		}
		//if buildmode = false
		
		
		if (buildmode == false)
		{
			//then set buildmode to true this is the only debug.log i get ;/
			buildmode = true;
			Debug.Log("Buildmode = true");
		}
	}
	else
	{
		Debug.Log("Not a Buildmodeswitch");
	}

ive also tried else and else if. didnt work either ;/
i need it to be public as i need to access it from another script too.
I have tried stating its state in “void start” too ,so that the the unity editor cant mess with it.

Any ideas or examples.
Couldnt find any help that didn’t include GUI.

Thanks
-Gravn

If you just want to toggle the boolean, assign the negated (!) variable to itself:

public bool buildmode;

void OnMouseDown(){

    if (buildmodeSwitch)
    {  
       buildmode = !buildmode; // toggle the boolean
    }
    else
    {
       Debug.Log("Not a Buildmodeswitch");
    }
}

As for your original problem, it contains a coding error … you have coded:

if buildMode == true then
   set buildMode = false

// At this point, buildMode will *ALWAYS* be false

if buildMode == false then
   set buildMode = true

What I think you want is:

if buildMode == true then
   buildMode = false
else
   buildMode = true

Also, Aldo’s suggestions is bang on … but I wanted to explain what was wrong with the original code.