Here is my code:
IEnumerator waitSpawner()
{
yield return new WaitForSeconds (startWait);
while (!stop)
{
randEnemy = Random.Range (0, 2);
Vector2 spawnPosition = new Vector2 (0, 6);
Instantiate (enemies[randEnemy], spawnPosition, gameObject.transform.rotation);
yield return new WaitForSeconds (spawnWait);
}
}
Instantiate() method is returning an instance of your prefab (enemies[randEnemy]). You can create a List or Dictionary to keep all your current enemies.
Sample as below:
List<EnemyController> currentEnemies = new List<EnemyController>();
IEnumerator waitSpawner() {
yield return new WaitForSeconds (startWait);
while (!stop) {
randEnemy = Random.Range (0, 2);
Vector2 spawnPosition = new Vector2 (0, 6);
GameObject newEnemy = Instantiate(enemies[randEnemy], spawnPosition, gameObject.transform.rotation) as GameObject;
// Get the enemy controler if any
EnemyController newEnemyController = newEnemy.GetComponent<EnemyController>();
currentEnemies.Add(newEnemyController);
yield return new WaitForSeconds (spawnWait);
}
}