I’m working on a small script which will print when an object with a specific tag is in the scene. I have it working as far as letting me know there aren’t any in the scene, but unfortunately when an object with the correct tag is spawned, the debug text doesn’t happen.
The script is as follows:
var gos : GameObject[];
gos = GameObject.FindGameObjectsWithTag("deadcorn");
if(gos.length == 1)
{
print("1 corn in scene");
}
if(gos.length == 0)
{
print("No corn in scene");
}
Effectively there’s a cube in the scene that when destroyed by the player spawns a different cube with the tag “deadcorn”. That all works in another script, and the object does indeed spawn in the scene. However it doesn’t appear that the above script detects it. Any ideas?
Well there are different approaches that i can tell. First just to clarify, are you using this lines in update function ? I mean the array declaration should be at the top, not inside any function, and the gos = GameObject.Find… part should be in update. Now, if we are okay would you try checking it with for loop.
for (var i : int; i < gos.Length; i++)
{
Debug.Log("Object count:" + i);
}
If still not working, you can try a different approach. Create a static int variable. Each time an object is destroyed, just before destroying decrease the int variable by 1. And each time it instantiates, increase the int variable by one. By this way, that int will be your object count, it will be a better way to do it instead of calling FindGameObjectsWithTag every frame. Just a thought.