Array to create a list of objects in the scene?

Hi Unity Community.

I would like to make a list of objects in a scene. Lets say I design 3 space levels and I have a perfab called "commet". In level 1, I add 10 commets, in lvl two, 3 commets. And in level three, 12 comments.

Now I tell the player to destroy all comments in the scene and I want to display it like "1/10". I know there is a way I can create an Array tell the array to add all commets in the scene to it and and count them. I am just having a hard time finding a code snip of something similar to point me in the right direction. I am using Javascript in unity.

Thank you for your time.

You could just have a static variable that increments/decrements every time you destroy a comet. It seems as though you know how many comets there are in total at any given time. When you spawn more, you'd just add that same number to the current total.

static var cometsDestroyed : int = 0;
static var cometsTotal : int = 0;

When you spawn comets:

cometsTotal += numberOfCometsYouJustSpawned;

When you destroy a comet:

cometsDestroyed += 1;

Your GUI script could then just display cometsDestroyed/cometsTotal.


However, since you asked for a function that creates an array and counts them, this function will count how many GameObjects with the 'Comet' tag are still existing. The GameObject.Find searches aren't cheap, so you probably wouldn't want to do this every frame.

function CountComets () : int;
{
    var comets : GameObject[] = GameObject.FindGameObjectsWithTag("Comet");
    return comets.Length;
}

Honestly, I would suggest the first approach, unless there's a reason you need the function (that you didn't mention in your question).

Hope this helps.