Script needs fixing ?!

if(spawn){
Instantiate(enemy , transform.position , transform.rotation);
limit-=1;
wait();
transform.Translate(Vector3.forward);
}

if(limit == 0){
spawn = false;
}
if(enemiesLeft == 0){
Application.LoadLevel("winScreen");
}

The script needs to wait four seconds spawn a enemy wait for 4 seconds move it forward and then spawn an enemy again but instead it spawns them all at the same time and they fly off everywhere

Are you using WaitForSeconds() in the wait() method? If so, maybe you have to put the yield statement directly within the if(spawn) statement.