n 2D shooting game just like Gradius,when I want to instantiate a wave of enemy squad.I declared a gap time among each squad members.But it turns out that the enemies doesn’t instantiated smoothly. Heres are my code and snapshot:
public class SpawnEnemy : MonoBehaviour
{
public Transform[] spawnPositions;
public GameObject[] enemies;
public float[] enemyGap;
public float[] timeBetweenEnemies;
public int[] waveEnemyCount;
public float startWait = 2;
private int waveCount;
private GameObject bossDetector;
void Start()
{
StartCoroutine(SpawnEnemyWave());
}
IEnumerator SpawnEnemyWave()
{
yield return new WaitForSeconds(startWait);
while(true)
{
for (int j = 0; j < waveEnemyCount[waveCount]; j++)
{
Spawn(waveCount);
yield return new WaitForSeconds(enemyGap[waveCount]);
}
waveCount++;
yield return new WaitForSeconds(timeBetweenEnemies[waveCount]);
}
}
void Spawn(int waveCount)
{
Instantiate(enemies[waveCount], spawnPositions[waveCount].position, spawnPositions[waveCount].rotation);
}
}

I’ m wondering is there some kind of ways to solve this problem so i can smoothly spawn those enemies?