Adding Delay to a for loop in C#

I’m creating a spawn system for my game. Problem is that everything spawns at once. I need them to stagger. I’ve tried using Thread.Sleep (which gives me errors) and a few other methods which have all failed. Here is my code:

using UnityEngine;
using System.Collections;

public class SpawnPieces : MonoBehaviour {
	//Sets up prefab
	public GameObject PiecePrefab;
	public GameObject Spawn;
	public int fSpawnDelay;
	public string GameTag;
	// number of rows and columns
	// use rows to count pieces
	public int rows = 8;
	public int columns = 5;

	// count each row by GameTag
	private int piececountR1 = GameObject.FindGameObjectsWithTag("game_piece_r1").Length;
	private int piececountR2 = GameObject.FindGameObjectsWithTag("game_piece_r2").Length;
	private int piececountR3 = GameObject.FindGameObjectsWithTag("game_piece_r3").Length;
	private int piececountR4 = GameObject.FindGameObjectsWithTag("game_piece_r4").Length;
	private int piececountR5 = GameObject.FindGameObjectsWithTag("game_piece_r5").Length;

	void SpawnStart() {
			Instantiate(PiecePrefab, Spawn.transform.position, Quaternion.identity);
	string SpawnStart(int EmptySpaces) {
		for(int i=0; i<rows; i++) {
			//Spawn Pieces
			Instantiate(PiecePrefab, Spawn.transform.position, Quaternion.identity);
		return "Spawn";

	// Use this for initialization
	void Start () {
		for(int i=0; i<rows; i++) {	
			Invoke("SpawnStart", fSpawnDelay);
	// Update is called once per frame
	void Update () {


Right now, that pauses however many seconds I’ve setup and then dumps everything all at once. How do I make it spawn 1 enemy, then pause, then another enemy, then pause, so I don’t start the game with a horde?

Try this:

void Start () {
     InvokeRepeating("SpawnStart", 0.0f, fSpawnDelay);

I’d make fSpawnDelay a float rather than an int.