Problems with Static Var

I have this first script name Spawncars:

static var BlueGo : boolean = false;
var tilf : int = 0;

function Start()

{


//  Will spawning the BlueCar

	if(tilf == 3)

	{

	BlueGo = true;

	}
}

The code there comes after is named Distribution

 	if(Spawncars.BlueGo == true)
 	{
 	Debug.Log("Works");
 		//Change the range between 1 and 3
 		BlueRange = (Random.Range(1,3));
 		
 		if(BlueRange == 1  BlueCheck)
 		{
 		BlueCheck = false;			
 		BlueSpawn1 = true;			
 		yield WaitForSeconds(BluSCD);	
 		BlueRange = 0;				,		
 		BlueCheck = true;				
 		BlueSpawn1 = false;			
 		Spawncars.BlueGo = false;		
		}
	}

But it doesn’t say “Works” in console, so the If never become true, why?

Why do you used function Start, used function update to always update if “tilf” is equal to 3. function start will run at the very first time you start and then will not update what inside anymore.

Okay i have tryed now with update but it still doesn’t work

The last part of that code is just a snippet of the whole thing. Is that too inside a Start() function…?

Here is the whole code.

Dont worry about the comments, im from denmark.

//Public variabler der bruges til De forskellige
//Spawn
var GoStart : boolean = false;

static var PoliceSpawn1 : boolean = false;	//Besked til Spawn1
static var PoliceSpawn2 : boolean = false;	//Besked til Spawn2
static var PoliceSpawn3 : boolean = false;	//Besked til Spawn3
static var PoliceCheck : boolean = true;	//Låser Police Forlykke, til CoolDown er færdig
static var PoSCD : int = 4;					//CoolDown
var PoliceRange : int = 0;					//Fordeleren

static var PinkSpawn1 : boolean = false;
static var PinkSpawn2 : boolean = false;
static var PinkSpawn3 : boolean = false;
static var PinkCheck : boolean = true;
static var PiSCD : int = 4;
var PinkRange : int = 0;

static var GreenSpawn1 : boolean = false;
static var GreenSpawn2 : boolean = false;
static var GreenSpawn3 : boolean = false;
static var GreenCheck : boolean = true;
static var GSCD : int = 4;
var GreenRange : int = 0;

static var BlueSpawn1 : boolean = false;
static var BlueSpawn2 : boolean = false;
static var BlueSpawn3 : boolean = false;
static var BlueCheck : boolean = true;
static var BluSCD : int = 4;
var BlueRange : int = 0;

static var BlackSpawn1 : boolean = false;
static var BlackSpawn2 : boolean = false;
static var BlackSpawn3 : boolean = false;
static var BlackCheck : boolean = true;
static var BlaSCD : int = 4;
var BlackRange : int = 0;

static var BrownSpawn1 : boolean = false;
static var BrownSpawn2 : boolean = false;
static var BrownSpawn3 : boolean = false;
static var BrownCheck : boolean = true;
static var BroSCD : int = 4;
var BrownRange : int = 0;




function Update () 
{
	
    if(Spawncars.PoliceGo == true)
 	{
 		//Ændre Range så den er mellem 1 og 3
 		PoliceRange = (Random.Range(1,3));
 		
 		if(PoliceRange == 1  PoliceCheck)
 		{
 		PoliceCheck = false;			//Gør at Forlykken ikke bliver opfyldt, så den kun er 50% sandt
 		PoliceSpawn1 = true;			//Variablen bliver sandt, besked til Spawn1(Empty gameObject)
 		//yield WaitForSeconds(PoSCD);	//Forlykken venter den tid PoSCD er
 		PoliceRange = 0;				//Ændre Range til 0, så Forlykken ikke er sandt,		
 		PoliceCheck = true;				//Gør at forlykken har 1 regl sandt, men mangler stadig Range
 		PoliceSpawn1 = false;			//Stopper Spawn1(Empty gameObject)
 		Spawncars.PoliceGo = false;		//Gør at den ydre forlykke bliver falsk
		}
 		
 		if(PoliceRange == 2  PoliceCheck)
 		{
 		PoliceCheck = false;			//Gør at Forlykken ikke bliver opfyldt, så den kun er 50% sandt
 		PoliceSpawn2 = true;			//Variablen bliver sandt, besked til Spawn2(Empty gameObject)
 		//yield WaitForSeconds(PoSCD);	//Forlykken venter den tid PoSCD er
 		PoliceRange = 0;				//Ændre Range til 0, så Forlykken ikke er sandt,		
 		PoliceCheck = true;				//Gør at forlykken har 1 regl sandt, men mangler stadig Range
 		PoliceSpawn2 = false;			//Stopper Spawn1(Empty gameObject)
 		Spawncars.PoliceGo = false;		//Gør at den ydre forlykke bliver falsk
 		}
 		
 		if(PoliceRange == 3  PoliceCheck)
 		{
  		PoliceCheck = false;			//Gør at Forlykken ikke bliver opfyldt, så den kun er 50% sandt
 		PoliceSpawn3 = true;			//Variablen bliver sandt, besked til Spawn3(Empty gameObject)
 		//yield WaitForSeconds(PoSCD);	//Forlykken venter den tid PoSCD er
 		PoliceRange = 0;				//Ændre Range til 0, så Forlykken ikke er sandt,		
 		PoliceCheck = true;				//Gør at forlykken har 1 regl sandt, men mangler stadig Range
 		PoliceSpawn3 = false;			//Stopper Spawn1(Empty gameObject)
 		Spawncars.PoliceGo = false;		//Gør at den ydre forlykke bliver falsk
 		}
 	}
 	
 	
 	if(Spawncars.PinkGo == true)
 	{
 		//Ændre Range så den er mellem 1 og 3
 		PinkRange = (Random.Range(1,3));
 		
 		if(PinkRange == 1  PinkCheck)
 		{
 		PinkCheck = false;			//Gør at Forlykken ikke bliver opfyldt, så den kun er 50% sandt
 		PinkSpawn1 = true;			//Variablen bliver sandt, besked til Spawn1(Empty gameObject)
 		//yield WaitForSeconds(PiSCD);	//Forlykken venter den tid PiSCD er
 		PinkRange = 0;				//Ændre Range til 0, så Forlykken ikke er sandt,		
 		PinkCheck = true;				//Gør at forlykken har 1 regl sandt, men mangler stadig Range
 		PinkSpawn1 = false;			//Stopper Spawn1(Empty gameObject)
 		Spawncars.PinkGo = false;		//Gør at den ydre forlykke bliver falsk
		}
 		
 		if(PinkRange == 2  PinkCheck)
 		{
 		PinkCheck = false;			//Gør at Forlykken ikke bliver opfyldt, så den kun er 50% sandt
 		PinkSpawn2 = true;			//Variablen bliver sandt, besked til Spawn2(Empty gameObject)
 		//yield WaitForSeconds(PiSCD);	//Forlykken venter den tid PiSCD er
 		PinkRange = 0;				//Ændre Range til 0, så Forlykken ikke er sandt,		
 		PinkCheck = true;				//Gør at forlykken har 1 regl sandt, men mangler stadig Range
 		PinkSpawn2 = false;			//Stopper Spawn1(Empty gameObject)
 		Spawncars.PinkGo = false;		//Gør at den ydre forlykke bliver falsk
		}
 		
 		if(PinkRange == 3  PinkCheck)
 		{
 		PinkCheck = false;			//Gør at Forlykken ikke bliver opfyldt, så den kun er 50% sandt
 		PinkSpawn3 = true;			//Variablen bliver sandt, besked til Spawn3(Empty gameObject)
 		//yield WaitForSeconds(PiSCD);	//Forlykken venter den tid PiSCD er
 		PinkRange = 0;				//Ændre Range til 0, så Forlykken ikke er sandt,		
 		PinkCheck = true;				//Gør at forlykken har 1 regl sandt, men mangler stadig Range
 		PinkSpawn3 = false;			//Stopper Spawn1(Empty gameObject)
 		Spawncars.PinkGo = false;		//Gør at den ydre forlykke bliver falsk
		}
 	}
 	
 	
 	if(Spawncars.GreenGo == true)
 	{
 		//Ændre Range så den er mellem 1 og 3
 		GreenRange = (Random.Range(1,3));
 		
 		if(GreenRange == 1  GreenCheck)
 		{
 		GreenCheck = false;			//Gør at Forlykken ikke bliver opfyldt, så den kun er 50% sandt
 		GreenSpawn1 = true;			//Variablen bliver sandt, besked til Spawn1(Empty gameObject)
 		//yield WaitForSeconds(GSCD);	//Forlykken venter den tid GSCD er
 		GreenRange = 0;				//Ændre Range til 0, så Forlykken ikke er sandt,		
 		GreenCheck = true;				//Gør at forlykken har 1 regl sandt, men mangler stadig Range
 		GreenSpawn1 = false;			//Stopper Spawn1(Empty gameObject)
 		Spawncars.GreenGo = false;		//Gør at den ydre forlykke bliver falsk
		}
 		
 		if(GreenRange == 2  GreenCheck)
 		{
 		GreenCheck = false;			//Gør at Forlykken ikke bliver opfyldt, så den kun er 50% sandt
 		GreenSpawn2 = true;			//Variablen bliver sandt, besked til Spawn2(Empty gameObject)
 		//yield WaitForSeconds(GSCD);	//Forlykken venter den tid GSCD er
 		GreenRange = 0;				//Ændre Range til 0, så Forlykken ikke er sandt,		
 		GreenCheck = true;				//Gør at forlykken har 1 regl sandt, men mangler stadig Range
 		GreenSpawn2 = false;			//Stopper Spawn1(Empty gameObject)
 		Spawncars.GreenGo = false;		//Gør at den ydre forlykke bliver falsk
		}
 		
 		if(GreenRange == 3  GreenCheck)
    	{
 		GreenCheck = false;			//Gør at Forlykken ikke bliver opfyldt, så den kun er 50% sandt
 		GreenSpawn3 = true;			//Variablen bliver sandt, besked til Spawn3(Empty gameObject)
 		//yield WaitForSeconds(GSCD);	//Forlykken venter den tid GSCD er
 		GreenRange = 0;				//Ændre Range til 0, så Forlykken ikke er sandt,		
 		GreenCheck = true;				//Gør at forlykken har 1 regl sandt, men mangler stadig Range
 		GreenSpawn3 = false;			//Stopper Spawn1(Empty gameObject)
 		Spawncars.GreenGo = false;		//Gør at den ydre forlykke bliver falsk
		}
 	}
 	
 	if(Spawncars.BlueGo == true)
 	{
 	Debug.Log("Works");
 		//Change the range between 1 and 3
 		BlueRange = (Random.Range(1,3));
 		
 		if(BlueRange == 1  BlueCheck)
 		{
 		BlueCheck = false;			
 		BlueSpawn1 = true;			
 		//yield WaitForSeconds(BluSCD);	
 		BlueRange = 0;						
 		BlueCheck = true;				
 		BlueSpawn1 = false;			
 		Spawncars.BlueGo = false;		
		}
	
 		
 		if(BlueRange == 2  BlueCheck)
 		{
 		BlueCheck = false;			//Gør at Forlykken ikke bliver opfyldt, så den kun er 50% sandt
 		BlueSpawn2 = true;			//Variablen bliver sandt, besked til Spawn2(Empty gameObject)
 		//yield WaitForSeconds(BluSCD);	//Forlykken venter den tid BluCD er
 		BlueRange = 0;				//Ændre Range til 0, så Forlykken ikke er sandt,		
 		BlueCheck = true;				//Gør at forlykken har 1 regl sandt, men mangler stadig Range
 		BlueSpawn2 = false;			//Stopper Spawn1(Empty gameObject)
 		Spawncars.BlueGo = false;		//Gør at den ydre forlykke bliver falsk
		}
 		
 		if(BlueRange == 3  BlueCheck)
 		{
 		BlueCheck = false;			//Gør at Forlykken ikke bliver opfyldt, så den kun er 50% sandt
 		BlueSpawn3 = true;			//Variablen bliver sandt, besked til Spawn3(Empty gameObject)
 		//yield WaitForSeconds(BluSCD);	//Forlykken venter den tid BluSCD er
 		BlueRange = 0;				//Ændre Range til 0, så Forlykken ikke er sandt,		
 		BlueCheck = true;				//Gør at forlykken har 1 regl sandt, men mangler stadig Range
 		BlueSpawn3 = false;			//Stopper Spawn1(Empty gameObject)
 		Spawncars.BlueGo = false;		//Gør at den ydre forlykke bliver falsk
		}
 	}
 	
 	
 	if(Spawncars.BlackGo == true)
 	{
 		//Ændre Range så den er mellem 1 og 3
 		BlackRange = (Random.Range(1,3));
 		
 		if(BlackRange == 1  BlackCheck)
 		{
 		BlackCheck = false;			//Gør at Forlykken ikke bliver opfyldt, så den kun er 50% sandt
 		BlackSpawn1 = true;			//Variablen bliver sandt, besked til Spawn1(Empty gameObject)
 		//yield WaitForSeconds(BlaSCD);	//Forlykken venter den tid BlaCD er
 		BlackRange = 0;				//Ændre Range til 0, så Forlykken ikke er sandt,		
 		BlackCheck = true;				//Gør at forlykken har 1 regl sandt, men mangler stadig Range
 		BlackSpawn1 = false;			//Stopper Spawn1(Empty gameObject)
 		Spawncars.BlackGo = false;		//Gør at den ydre forlykke bliver falsk
		}
 		
 		if(BlackRange == 2  BlackCheck)
 		{
 		BlackCheck = false;			//Gør at Forlykken ikke bliver opfyldt, så den kun er 50% sandt
 		BlackSpawn2 = true;			//Variablen bliver sandt, besked til Spawn2(Empty gameObject)
 		//yield WaitForSeconds(BlaSCD);	//Forlykken venter den tid BlaCD er
 		BlackRange = 0;				//Ændre Range til 0, så Forlykken ikke er sandt,		
 		BlackCheck = true;				//Gør at forlykken har 1 regl sandt, men mangler stadig Range
 		BlackSpawn2 = false;			//Stopper Spawn1(Empty gameObject)
 		Spawncars.BlackGo = false;		//Gør at den ydre forlykke bliver falsk
		}
				
 		if(BlackRange == 3  BlackCheck)
 		{
 		BlackCheck = false;			//Gør at Forlykken ikke bliver opfyldt, så den kun er 50% sandt
 		BlackSpawn3 = true;			//Variablen bliver sandt, besked til Spawn3(Empty gameObject)
 		//yield WaitForSeconds(BlaSCD);	//Forlykken venter den tid BlaCD er
 		BlackRange = 0;				//Ændre Range til 0, så Forlykken ikke er sandt,		
 		BlackCheck = true;				//Gør at forlykken har 1 regl sandt, men mangler stadig Range
 		BlackSpawn3 = false;			//Stopper Spawn1(Empty gameObject)
 		Spawncars.BlackGo = false;		//Gør at den ydre forlykke bliver falsk
		}
 	}
 	
 	if(Spawncars.BrownGo == true)
 	{
 		//Ændre Range så den er mellem 1 og 3
 		BrownRange = (Random.Range(1,3));
 		
 		if(BrownRange == 1  BrownCheck)
 		{
 		BrownCheck = false;			//Gør at Forlykken ikke bliver opfyldt, så den kun er 50% sandt
 		BrownSpawn1 = true;			//Variablen bliver sandt, besked til Spawn1(Empty gameObject)
 		//yield WaitForSeconds(BroSCD);	//Forlykken venter den tid BroCD er
 		BrownRange = 0;				//Ændre Range til 0, så Forlykken ikke er sandt,		
 		BrownCheck = true;				//Gør at forlykken har 1 regl sandt, men mangler stadig Range
 		BrownSpawn1 = false;			//Stopper Spawn1(Empty gameObject)
 		Spawncars.BrownGo = false;		//Gør at den ydre forlykke bliver falsk
		}
 		
 		if(BrownRange == 2  BrownCheck)
 		{
 		BrownCheck = false;			//Gør at Forlykken ikke bliver opfyldt, så den kun er 50% sandt
 		BrownSpawn2 = true;			//Variablen bliver sandt, besked til Spawn2(Empty gameObject)
 		//yield WaitForSeconds(BroSCD);	//Forlykken venter den tid BroCD er
 		BrownRange = 0;				//Ændre Range til 0, så Forlykken ikke er sandt,		
 		BrownCheck = true;				//Gør at forlykken har 1 regl sandt, men mangler stadig Range
 		BrownSpawn2 = false;			//Stopper Spawn1(Empty gameObject)
 		Spawncars.BrownGo = false;		//Gør at den ydre forlykke bliver falsk
		}
				
 		if(BrownRange == 3  BrownCheck)
 		{
 		BrownCheck = false;			//Gør at Forlykken ikke bliver opfyldt, så den kun er 50% sandt
 		BrownSpawn3 = true;			//Variablen bliver sandt, besked til Spawn3(Empty gameObject)
 		//yield WaitForSeconds(BroSCD);	//Forlykken venter den tid BroCD er
 		BrownRange = 0;				//Ændre Range til 0, så Forlykken ikke er sandt,		
 		BrownCheck = true;				//Gør at forlykken har 1 regl sandt, men mangler stadig Range
 		BrownSpawn3 = false;			//Stopper Spawn1(Empty gameObject)
 		Spawncars.BrownGo = false;		//Gør at den ydre forlykke bliver falsk
		}
 	}	

}

Holy cow that is a messy update statement, and in my opinion you are WAY over-using the static keyword on stuff you don’t need to. I figure you will be better off triggering these variables through more predictable means (I personally never feel I have control over static variables);

  1. Create a boolean BlueGo in the Distribution.js (or whatever it was called, the last code you pasted)
  2. In the Spawncars.js remove BlueGo
  3. Create variable>> var distScript : Distribution; (if the script is called Distribution. If its not, then call it whatever the name of the JS file is).
  4. In the inspector, drag an instance of the game object that holds the Distribution script onto the variable distScript. You have now direct access to the BlueGo variable as such: distScript.BlueGo = true;

Alternatively you can (in the Awake function preferably) do dist = GameObject.Find(“NameOfGameObjectThatHasTheDistributionScript”).GetComponent(Distribution);

But how would that work?

up