Question by 
               MidnightDragonT · Jan 07, 2016 at 10:11 PM · 
                c#collision detectiongameobjectstagscounter  
              
 
              How to correctly count number of objects?
I'm using a code to give me a number of players left in the game, multiple characters one player, but each time I get to the first level it tells me FindGameObjectsWithTag can only be called from the main thread. Here's the code I am using for it
 using UnityEngine;
 using System.Collections;
 using MadLevelManager;
 
 public class levelControl : MonoBehaviour {
 
     private int rescued;
     int player = GameObject.FindGameObjectsWithTag("Player").Length;
 
     // Use this for initialization
     void Start ()
         {
 
     }
     
     // Update is called once per frame
     void Update ()
     {
         if (player == 0) 
         {
             if (rescued == 3) {
                 MadLevelProfile.SetLevelBoolean (MadLevel.currentLevelName, "star_1", true);
                 MadLevelProfile.SetLevelBoolean (MadLevel.currentLevelName, "star_2", true);
                 MadLevelProfile.SetLevelBoolean (MadLevel.currentLevelName, "star_3", true);
                 MadLevelProfile.SetCompleted (MadLevel.currentLevelName, true);
             } else if (rescued == 2) {
                 MadLevelProfile.SetLevelBoolean (MadLevel.currentLevelName, "star_1", true);
                 MadLevelProfile.SetLevelBoolean (MadLevel.currentLevelName, "star_2", true);
                 MadLevelProfile.SetCompleted (MadLevel.currentLevelName, true);
             } else if (rescued == 1) {
                 MadLevelProfile.SetLevelBoolean (MadLevel.currentLevelName, "star_1", true);
                 MadLevelProfile.SetCompleted (MadLevel.currentLevelName, true);
             }
             MadLevel.LoadLevelByName ("Game Info");
         }
     }
     void OnTriggerEnter(Collider other)
     {
         if(other.gameObject.tag == "Player")
         {
         Destroy (other.gameObject);
         rescued = rescued + 1;    
     }
     }
 }
               Comment
              
 
               
               
               Best Answer 
              
 
              Answer by corn · Jan 07, 2016 at 11:50 PM
The problem is int player = GameObject.FindGameObjectsWithTag("Player").Length;. This can only be done inside a method, not while declaring a class attribute. You just need to do it in Start.
  public class levelControl : MonoBehaviour {
      private int rescued;
      int player;
  
      void Start ()
      {
          player = GameObject.FindGameObjectsWithTag("Player").Length;
      }
 ...
 }
Answer by MidnightDragonT · Jan 08, 2016 at 12:06 AM
Thank you so much, I thought maybe the player variable was incorrect completely.
Your answer
 
 
              koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                