I’m trying to get infinite enemy’s to spawn more frequently over time. atm the “numberOfEnemy” (3) will spawn but no more after that. what am i doing wrong or if there is a better way to do this that would be great. 
public GameObject enemy;
private float timePassed = 0f;
private float spawnRate = 0f;
private int numberOfEnemy = 3;
private int m = 3;
private int i = 0;
// Update is called once per frame
void Update () {
timePassed += Time.deltaTime;
spawnRate += Time.deltaTime;
/*if (timePassed >= 60f) {
if (m >= 2) {
m -= 1;
}
numberOfEnemy += 1;
timePassed = 0f;
}*/
if (spawnRate >= m) {
while (i < numberOfEnemy) {
Instantiate(enemy);
i++;
}
spawnRate = 0f;
}
}
I managed to solve this one. Ill post it for anyone else looking for a similar fix. Although if you have a better method please post below.
public GameObject enemy;
private float timePassed = 0f;
private float spawnRate = 0f;
private int numberOfEnemy = 2;
private float m = 4f;
void Awake () {
spawnRate = Time.time + m;
}
// Update is called once per frame
void Update () {
timePassed += Time.deltaTime;
if (timePassed >= 10f) {
if (m >= 1) {
m -= 0.5f;
}
numberOfEnemy += 1;
timePassed = 0f;
}
if (spawnRate < Time.time) {
for (int i = 0; i < numberOfEnemy; i++) {
Instantiate(enemy);
}
spawnRate = Time.time + m;
}
}
}
If I had to pick a way to do it, I’d do it like this.
using UnityEngine;
using System.Collections;
public class Spawn : MonoBehavior
{
public GsameObject enemy;
private float timePassed = 0f, spawnRate = 0f, m = 4f, spawnTimer = 0f;
private int numberOfEnemy = 2;
void Start()
{
StartCoroutine(Speed());
StartCoroutine(Spawn());
}
IEnumerable Speed()
{
timePassed += Time.deltaTime;
if(timePassed >= 10.1f) {
timePassed = 0.0f;
numberOfEnemy++;
spawnRate += 1.0f;
}
}
IEnumerable Spawn()
{
spawnTimer += Time.deltaTime;
if(spawnTimer > spawnRate) {
for(int i = 0; i < numberOfEnemy; i++) {
Instantiate(this.enemy);
}
spawnTimer = 0.0f;
}
}
}