How would I randomize the materials of an object using this script.

using UnityEngine;
using System.Collections.Generic;

public class SkylineManager1 : MonoBehaviour {

	public Transform prefab;
	public int numberOfObjects;
	public float recycleOffset;
	public Vector3 minSize, maxSize;

	private Vector3 nextPosition;
	private Queue<Transform> objectQueue;
	
	void Start () {
		GameEventManager.GameStart += GameStart;
		GameEventManager.GameOver += GameOver;
		objectQueue = new Queue<Transform>(numberOfObjects);
		for(int i = 0; i < numberOfObjects; i++){
			objectQueue.Enqueue((Transform)Instantiate
			                    (prefab, new Vector3(0f, 0f, -100f), Quaternion.identity));
		}
		enabled = false;

	}

	void Update () {
		if(objectQueue.Peek().localPosition.x + recycleOffset < Runner1.distanceTraveled){
			Recycle();
		}
	}

	private void Recycle () {
		Vector3 scale = new Vector3(
			Random.Range(minSize.x, maxSize.x),
			Random.Range(minSize.y, maxSize.y),
			Random.Range(minSize.z, maxSize.z));

		Vector3 position = nextPosition;
		position.x += scale.x * 0.5f;
		position.y += scale.y * 0.5f;

		Transform o = objectQueue.Dequeue();
		o.localScale = scale;
		o.localPosition = position;
		nextPosition.x += scale.x;
		objectQueue.Enqueue(o);
	}
	private void GameStart () {
		nextPosition = transform.localPosition;
		for(int i = 0; i < numberOfObjects; i++){
			Recycle();
		}
		enabled = true;
	}

	private void GameOver () {
		enabled = false;
	}
}

Trying to work out how to randomize the materials of each object that gets spawned, can’t work out how.

Try this. I added a List of materials you will need to add to in the inspector. Enjoy.

using UnityEngine;
using System.Collections.Generic;

public class SkylineManager1 : MonoBehaviour {
 
    public Transform prefab;
    public int numberOfObjects;
    public float recycleOffset;
    public Vector3 minSize, maxSize;
    public List<Material> randomMaterials; //ADD THIS - and assign some materials in the inspector
 
    private Vector3 nextPosition;
    private Queue<Transform> objectQueue;
 
    void Start () {
       GameEventManager.GameStart += GameStart;
       GameEventManager.GameOver += GameOver;
       objectQueue = new Queue<Transform>(numberOfObjects);
       for(int i = 0; i < numberOfObjects; i++){
         objectQueue.Enqueue((Transform)Instantiate
                             (prefab, new Vector3(0f, 0f, -100f), Quaternion.identity));
       }
       enabled = false;
 
    }
 
    void Update () {
       if(objectQueue.Peek().localPosition.x + recycleOffset < Runner1.distanceTraveled){
         Recycle();
       }
    }
 
    private void Recycle () {
       Vector3 scale = new Vector3(
         Random.Range(minSize.x, maxSize.x),
         Random.Range(minSize.y, maxSize.y),
         Random.Range(minSize.z, maxSize.z));
 
       Vector3 position = nextPosition;
       position.x += scale.x * 0.5f;
       position.y += scale.y * 0.5f;

     
       
 
       Transform o = objectQueue.Dequeue();
       o.localScale = scale;
       o.localPosition = position;
       nextPosition.x += scale.x;

       //Random Material TIME!!!!
       if(randomMaterials != null && randomMaterials.Count > 0)
            o.gameObject.renderer.material = randomMaterials[Random.Range(0, randomMaterials.Count)];


       objectQueue.Enqueue(o);
    }
    private void GameStart () {
       nextPosition = transform.localPosition;
       for(int i = 0; i < numberOfObjects; i++){
         Recycle();
       }
       enabled = true;
    }
 
    private void GameOver () {
       enabled = false;
    }
}