i have a list of transforms and i want to spawn a prefab once for all the transforms in the list.

as above but i just can seem to get this working at all! sorry if the question is structured bad in advance, its my first post.

if i have:

    //generated on start
    int numAliens;
    //generated on start. a list of the desired spawn locations
    public List<Vector3> AlienPos  = new List<Vector3>();
    //the prefabbed alien . i hope to make this an array of multiple prefabs at some point
    public GameObject AlienPrefab;
    
    
    
    //respawn all enemys
    	void rePopWave(){
    		
    		while(numAliens > 0) {
    			numAliens++;
    
    			//Instantiate(AlienPrefab, AlienPos[numAliens], Quaternion.identity);
    			Debug.Log ("THEY ARE BACK");
    			
    		}
    	}

Your while loop is never going to end. The check while(numAliens>0) will always be true as long as you have any aliens. Especially since every time the loop goes it adds 1 to numAliens, meaning it will always be positive. So the while loop goes forever.

A solution would be to restructure it like this

  //generated on start
     int numAliens = 0;
     //generated on start. a list of the desired spawn locations
     public List<Vector3> AlienPos  = new List<Vector3>();
     //the prefabbed alien . i hope to make this an array of multiple prefabs at some point
     public GameObject AlienPrefab;
     
     
     
     //respawn all enemys
         void rePopWave(){
             
             while(numAliens < AlienPos.Count) {
                 numAliens++;
     
                 Instantiate(AlienPrefab, AlienPos[numAliens], Quaternion.identity);
                 Debug.Log ("THEY ARE BACK");
                 
             }
         }

Eventually the numAliens will be greater than AlienPos.Count (which is the size of the list) and when that happens the while loop will stop and your aliens should all be created.