- Home /
ArgumentException: GetComponent requires that the requested component 'List`1' derives from MonoBehaviour or Component or is an interface.
Hi, I have been working on this script: 
 
 public enum PlaneType { SmallBomber, MediumBomber, LargeBomber } public PlaneType planetype; public List Plane = new List (); public List Spawns = new List (); public List Remove = new List (); 
 
                  public bool T;
    public void PlaneAttack(PlaneType type)
    { 
     if (type == PlaneType.SmallBomber)
     {
         for (int i = 0; i < 2; i++)
         {
             Instantiate(Plane[1]);
             Instantiate(Plane[2]);
             Thread.Sleep(1000);
         }
     }
     else if (type == PlaneType.MediumBomber)
     {
         for (int i = 0; i < 2; i++)
         {
             Instantiate(Plane[0]);
             Thread.Sleep(3000);
         }
     }
     else
     {
         Instantiate(Plane[0]);
     }
 }
     Plane = GetComponent<List<GameObject>>();
     for (int i = 0; i < 5; i++)
     {
         Spawns.Add(GameObject.Find("Spawn " + i.ToString()));
     }
     for (int j  = 0; j < 5; j++)
     {
         Remove.Add(GameObject.Find("Destroy " + j.ToString()));
     }
     for (int a = 0; a < 3; a++)
     {
         Plane.Add(GameObject.Find("EnemyPlane Small"));
     }
     Plane[0].GetComponent<Airplane>().StartPoint = Spawns[3].transform;
     Plane[0].GetComponent<Airplane>().EndPoint = Remove[3].transform;
     Plane[1].GetComponent<Airplane>().StartPoint = Spawns[2].transform;
     Plane[1].GetComponent<Airplane>().EndPoint = Remove[2].transform;
     Plane[2].GetComponent<Airplane>().StartPoint = Spawns[4].transform;
     Plane[2].GetComponent<Airplane>().EndPoint = Remove[4].transform;
  }
 
 // Update is called once per frame
 void Update () {
        if (T == true)
        {
         PlaneAttack(planetype);
         T = false;
        }
   }
 }
  
I have 3 copies of the same prefab, in the Plane list, but with different transform set (using empty GameObjects that act as Markers). When debugging, this error is thrown:
ArgumentException: GetComponent requires that the requested component 'List`1' derives from MonoBehaviour or Component or is an interface. UnityEngine.Component.GetComponent[List`1] () (at C:/buildslave/unity/build/artifacts/generated/common/runtime/ComponentBindings.gen.cs:48) PlaneAttack.Start () (at Assets/Scripts/PlaneAttack.cs:131)
I entered the first line into Unity answers but to no avail as none of the previous answers suited my script.
Thanks
NOTE: this is a simplified version of my final script, and the lines listed in the error will not match those in the code shown. 
Answer by Hellium · Jun 13, 2017 at 04:17 PM
  Plane = GetComponent<List<GameObject>>();
Does not mean anything
You may want to get the child transforms instead :
 List<Transform> Plane = new List<Transform>() ;
 // ....
 for( int childIndex = 0 ; childIndex < transform.childCount ; ++childIndex )
        Plane.Add( transform.GetChild( childIndex ) ) ;
Your answer
 
 
             Follow this Question
Related Questions
Latest update spawned weird errors in my console. 1 Answer
Inheritance Confusion 1 Answer
Restore list elements at termination 0 Answers
Error when transferring items from one list to another 1 Answer
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                