- Home /
How to access Instantiated gameObjects from a Collection inside for loop?
I have 3 prefabs named "blackout" being instantiated in the position of other 3 gameObjects I positioned and rotated myself in the editor. This works fine.
However, after the 3 blackouts are instantiated, I need to "set active to false" (disactivate) each one of them in an interval of 2 seconds between each one - starting from the first blackout - instantiated in the position of blackoutCollection[0] - until the last and third blackout - positioned in blackoutCollection[2].
How can I do this? I'm failing to access the blackout gameObjects. blackoutCollection[i] are only empty gameObjects used to place the blackout prefabs where I want.
function Blackout() { var i : int = 0;
for (i=0; i<=2; i++)
{
Instantiate (blackout,
Vector3 (blackoutCollection[i].transform.position.x,
blackoutCollection[i].transform.position.y,
blackoutCollection[i].transform.position.z),
blackoutCollection[i].transform.rotation);
}
yield WaitForSeconds(2);
blackoutCollection[0].gameObject.active = false;
// Lines like the above represent what I have,
// but I don't need to disactivate those empty gameObjects.
// I need to do this with the blackout prefabs.
yield WaitForSeconds(2);
blackoutCollection[1].gameObject.active = false;
yield WaitForSeconds(2);
blackoutCollection[2].gameObject.active = false;
}
I tryied using blackout.blackoutCollection[1].gameObject.active = false;
but of course that didn't work.
Answer by mrde · Jan 24, 2011 at 07:32 AM
you can each instantiated prefabs set child your 3 position gameobject (blackoutCollection[i])
try follow. not checked
for (i=0; i<=2; i++) {
// add this var instObj = Instantiate (blackout,
Vector3 (blackoutCollection[i].transform.position.x,
blackoutCollection[i].transform.position.y,
blackoutCollection[i].transform.position.z),
blackoutCollection[i].transform.rotation);
// add this
instObj.parent = blackoutCollection[i].transform;
}
and instead
blackoutCollection[1].gameObject.active = false;
call
blackoutCollection[1].gameObject.SetActiveRecursively(false);
Thank you! This worked perfectly.
The only thing that was missing was the "transform.parent": instObj.transform.parent = blackoutCollection[i].transform;
Your answer

Follow this Question
Related Questions
Make object move in a direction depending on where it spawns? (C#) 1 Answer
Different array value at different times 1 Answer
Prefabs instantiated from an array are keeping their public int value 1 Answer
How Do I Add An Instantiated Object To An Array? 3 Answers
Finding the Sum of Values of Multiple GameObjects in an Array + Variable Sized arrays 0 Answers