Variables

[SerializeField]
private GameObject prefab;

[SerializeField]
private float intervalo = 2f;

Coroutine

IEnumerator SpawnLoop()
{
    while (true)
    {
        Instantiate(
            prefab,
            transform.position,
            transform.rotation
        );

        yield return new WaitForSeconds(
            intervalo
        );
    }
}

Iniciar

void Start()
{
    StartCoroutine(
        SpawnLoop()
    );
}

Resumen rápido

while (true)
WaitForSeconds(...)
Instantiate(...)