How to check which script is executing first

Hi, I have 2 Scripts globalproperty.js and display.js. I am accessing the value of variable of globalproperty.js in display.js but its failing, display.js script is executing first. How can i make globalproperty.js script to execute first.

//globalproperty.js//

var number: int;

function Start()

{

number = 4;

}

//display.js//

var global : globalProperty;// instance of globalproperty script

function Start()

{

global = GameObject.Find(“Cube”).GetComponent(globalproperty);

Debug.Log(global.number);// Here its printing 0 instead of 4. It means this script is executing first

}

I want to execute globalproperty.js first, what should i do now?

You should initialize your content in the Awake() function. That way, once Start() is called, there's no doubt all your scripts are ready to interact with one another. I believe that's the exact purpose of Awake vs Start.

EDIT: Otherwise, you could wait, or use a locking system like BiG propose. Although in the example, if the property isn't ready, it simply skip initialization. You might rather want to wait for it be ready using something like this, in JS:

function Start()
{
    while( !myGameObject.myComponent.ready ) //not ready? then...
    {
        yield; // ...wait!
    }

    myProperty = myGameObject.myComponent.myProperty; //go on with initialization
}

This way, it'll will wait until lock is false and will then proceed with initialization.

It’s pretty simple: just use a lock:

//globalproperty.js//

var number: int;
var lock=true;

function Start()
{
   number = 4;
   lock=false;
}

//display.js//

var global : globalProperty;// instance of globalproperty script

function Start()
{
   if (GameObject.Find("Cube").GetComponent(globalproperty).lock==false)
      global = GameObject.Find("Cube").GetComponent(globalproperty);
}

The logic simply consists in checking for lock value: at globalproperty’s execution it turns to TRUE, permitting display’s events to occur.