Instantiate objects in a specific order

I am making 3d endless runner and right now my code generates random floor prefabs(I have 6 of them) from the array at the certain time. But instead of random I want specific prefabs to be generated so the player will be passing through different zones. To be more exact - each prefab from the array should be instantiated 3 times in a row and then the next one and so on. When the loop goes through all the prefabs from the array, it should start again
from the 1st prefab.

The code I have now:

public GameObject[] prefabArray;
public float spawnTime;

void Start () {    
     Spawn (); 
}
    
void Spawn () {    
     Instantiate (prefabArray [Random.Range (0,prefabArray.GetLength(0))], transform.position, Quaternion.identity);    
     Invoke ("Spawn", spawnTime); 
}

I would think your guy is not moving and the world is moving towards him, so a level manager would do.

Define a method with a set of parameter that will make things happen in the way you want and call that method at specific time. For instance this below will create 5 objects you define from the array.

void CreateObject(param int [] list)
{
   for (int i = 0; i < list.Length; i++)
      Instantiate(array[list*], position, rotation);*

}
void Update()
{
if(time == 0) CreateObject(1,2,3,4,5);
if (time == 10)CreateObject(1,1,1,2,2,2);
// And so on
}

Thank you, but unfortunately Unity crushes when I use this code. I’ve just created new prefabs which consist of few objects(in my case 3 pieces of the floor) and still using my original code.