x


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.

more ▼

asked Jan 24 '11 at 06:46 AM

Al Anselmo gravatar image

Al Anselmo
62 4 5 10

(comments are locked)
10|3000 characters needed characters left

1 answer: sort voted first

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);

more ▼

answered Jan 24 '11 at 07:32 AM

mrde gravatar image

mrde
466 7 7 17

Thank you! This worked perfectly.

The only thing that was missing was the "transform.parent": instObj.transform.parent = blackoutCollection[i].transform;

Jan 24 '11 at 06:53 PM Al Anselmo
(comments are locked)
10|3000 characters needed characters left
Your answer
toggle preview:

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Topics:

x1683
x1363
x153
x11

asked: Jan 24 '11 at 06:46 AM

Seen: 807 times

Last Updated: Jan 24 '11 at 06:46 AM