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