I'm trying to make a random object spawning script in Unity.
Bellow is the code, any suggestions for improvement / changes? I'm new to both Unity and C#.
// Game objects and Transforms
public Transform playerTransform;
public Transform[] obstaclePrefab;
// spawn params
public float minYDicstane = 6.0f;
public float maxYDistance = 11.0f;
private float boxPositionY;
public float minXDistance = 0.0f;
public float maxXDistance = 3.0f;
private float boxPositionX;
private float minSpawnTime;
private float maxSpawnTime;
private float spawnTime;
private float timeCounter;
// Distances
private float playerDistance;
private float boxDistance;
private float ySpread;
private void Start() 
{
    // Count sequence
    minSpawnTime = 3.0f;
    maxSpawnTime = 8.0f;
    // Count timer
    timeCounter = 0;
    spawnTime = Random.Range(minSpawnTime, maxSpawnTime);
}
private void Update() 
{
    // Count the random spawn time
    timeCounter += Time.deltaTime;
    Debug.Log ("Spawn Time: " + spawnTime + " spawnCount: " + timeCounter);
    if(timeCounter >= spawnTime) 
    {
        // boxDistanceFromPlayer
        playerDistance = playerTransform.position.y;
        // Box spawn distance
        // X position
        boxPositionX = Random.Range(minXDistance, maxXDistance);
        boxPositionX = (boxPositionX-1)*2.0f;
        // Y Position
        boxPositionY = playerDistance + Random.Range(minYDicstane, maxYDistance);
        // Select box color
        int boxColor = Random.Range (0, 4);
        // Let the boxes awake!!!
        Instantiate (obstaclePrefab [boxColor], new Vector2 (boxPositionX, boxPositionY), Quaternion.identity);
        // Make new random spawn time
        spawnTime = Random.Range (minSpawnTime, maxSpawnTime);
        timeCounter = 0;
    }
}
Code after changes, using coroutines
// Game objects and Transforms
public Transform playerTransform;
public GameObject[] obstaclePrefab;
// spawn params
public float minYDicstane = 6.0f;
public float maxYDistance = 11.0f;
public float minXDistance = 0.0f;
public float maxXDistance = 3.0f;
public float minSpawnTime = 2.0f;
public float maxSpawnTime = 5.0f;
public float spawnTime = 4.0f;
IEnumerator SpawnBoxes() 
{
    while (true) 
    {
        float boxPositionY;
        float boxPositionX;
        //Distances
        float playerDistance;
        // Player position
        playerDistance = playerTransform.position.y;
        // Box position
        boxPositionX = Random.Range(minXDistance, maxXDistance);
        boxPositionY = playerDistance + Random.Range(minYDicstane, maxYDistance);
        // Select box
        GameObject box = obstaclePrefab[Random.Range(0, obstaclePrefab.Length - 1)];
        // Instantiate box
        Instantiate (box, new Vector2 (boxPositionX, boxPositionY), Quaternion.identity);
        // Coroutine random amount of time
        yield return new WaitForSeconds(Random.Range(minSpawnTime, maxSpawnTime));
    } 
}
private void Start() 
{
    StartCoroutine(SpawnBoxes());
}

