- Home /
Accesing instantiated gameobjects from another script
Hi everyone, I have created script that radnomly spawn object on random places and it's attached to emptygameobject parent. Now i want to be able to acces that objects that are being instantiated with different script that is attached to my vehicle and it measures distance and do something. I tried lots of combination, but i can't get it to work. If someone have suggestion, please....
This is script for Spawning:
static var BLA; function Start() { Spawn(); }
function Spawn() {
for (i=0; i<amount; i++) { yield WaitForSeconds(spawnTime);
var obj : GameObject = cPrefabs[Random.Range(0, cPrefabs.length)];
var pos: Transform = spawnPoints[Random.Range(0, spawnPoints.length)];
BLA = Instantiate(obj, pos.position, pos.rotation);
}
}
This is script for distance
function Update() { range = Vector3.Distance(Spawning.BLA.position, transform.position); if(range <= dist) { //Something would appear on screen...it doesn't meather right now!
}
}
Any help is veeeery much appreciated!!!
Answer by Alec-Slayden · Feb 25, 2011 at 07:05 PM
Well it looks like one of the issues could be your wait time before spawning.
You're using Spawning.BLA.position in your distance check in update, which means it's going to be looking for BLA before it spawns. That'll return a null reference error.
Another issue is that BLA is going to be a GameObject, not a Transform, so you'll need to check Spawning.BLA.transform.position or it'll tell you position isn't an attribute of Game objects.
A quick way to solve this would be:
function Update() { if (Spawning.BLA){ range = Vector3.Distance(Spawning.BLA.transform.position, transform.position); if(range <= dist) { //Something would appear on screen...it doesn't meather right now!
}
}
}
That will only run your distance check if something is assigned to BLA, and then it'll check the transform of the object. You'll only be able to check the most recently spawned object of course. If you wanted to keep track of all of them, you should probably make BLA a GameObject[] with a length equal to the 'amount' variable you used. Of course if you plan on this being easily changeable, you're probably better off with a more dynamic array.
Answer by Milena · Feb 26, 2011 at 12:03 PM
Thank You very much for clearing this out for me. You have no idea how much this means!!!