Can you help me with my enemy wave system?

Hi guys, I kinda need help with my wave system. In my wave system it uses a piece of code that after it spawns like 5 enemies it will stop and start a timer. When the timer reaches a certain time it will start a new wave. However, I don’t want billions of enemies swarming the player nonstop. Can you guys please help me with this?

#pragma strict
var spawnPoints : Transform[];
var enemyPrefabs : GameObject[];
var yieldTimeMin = 2;
var yieldTimeMax = 5;
public var EnemyMovement : EnemyMovement; //the script to access the enemies movement.

var respawnTimer : float;
var respawnTime : float = 3;  
var respawnTimerReset : int = 0;
static var enemyCounter = 0;
private var barLength = 0.0;
var spawnXOffsetMin = 0;
var spawnXOffsetMax = 0;
var spawnZOffsetMin = 0;
var spawnZOffsetMax = 0;
var defaultSpawnNumber = 5;
var waveNumber = 1;
var isSpawning = false;
public var EnemyDamageReceiver : EnemyDamageReceiver;
public var EnemyAttack : EnemyAttack;
public var EnemyShoot : EnemyShoot;
function SpawnEnemies(wave : int)
{
var spawnNum = (defaultSpawnNumber + 5 * (wave - 1));
isSpawning = true;
for(var i = 0; i < spawnNum;i++)
{
yield WaitForSeconds(Random.Range(yieldTimeMin, yieldTimeMax));
var object : GameObject = enemyPrefabs[Random.Range(0, enemyPrefabs.Length)];
var position : Transform = spawnPoints[Random.Range(0, spawnPoints.Length)];
Instantiate(object, position.position +
Vector3(Random.Range(spawnXOffsetMin, spawnXOffsetMax), 0,
Random.Range(spawnZOffsetMin, spawnZOffsetMax)), position.rotation);
enemyCounter++;
}
isSpawning = false;
}
function UpdateWave()
{
waveNumber++;
SpawnEnemies(waveNumber);
defaultSpawnNumber++;
}
function Start ()
{
SpawnEnemies(waveNumber);
barLength = Screen.width / 8;
}
function Update ()
{
if(!isSpawning)
{

respawnTimer += Time.deltaTime;
if(respawnTimer >= respawnTime)
{
	EnemyDamageReceiver.hitPoints += 20;
	EnemyMovement.desiredSpeed += 0.5;
	EnemyAttack.damage += 1;
	EnemyShoot.damage += 1;
	respawnTimer = respawnTimerReset;
	UpdateWave();
}
}
}
function OnGUI()
{
	GUI.Box(new Rect(5, 55, 50, 23), "Wave");
	GUI.Box(new Rect(55, 55, barLength, 23), waveNumber.ToString("0"));
}

Hello,

From what I understood in your question, maybe you can have an int count down on every enemy spawn that it will stop when int = zero. for example 1st wave spawn 7 at random times, when its zero then stop spawning and count down for new wave, then set max int for spawn 8 or however you want the difficulty of the wave to be then subtract one on every spawn, etc…)

what you could do is this:

you make an int that counts down to zero when you spawn enemies, to controll the amount of spawned enemies.

then, you make another int with the amount of spawned enemies, and you decrement it when you kill an enemy.

then you can simply add an if statement to check if that int is zero. if so, it means there are no enemies left and a new wave can be spawned.

note: you will have to update this int every time you spawn a new wave!