Need assistance with destroying Gameobjects

I am making a endless runner type game, having problem with destroying platforms once its off my screen. Just want to clean up my hierarchy panel. Here is my platform script…

public Transform PlatformPrefab;
private Vector3 _nextTileSpawn;
void Start()
{
_nextTileSpawn.z = 12;
StartCoroutine(SpawnPlatform());
}

void Update()
{

}
IEnumerator SpawnPlatform()
    {
        yield return new WaitForSeconds(0.5f);
        Instantiate(PlatformPrefab, _nextTileSpawn, PlatformPrefab.rotation);
        _nextTileSpawn.z += 4;            
    Instantiate(PlatformPrefab, _nextTileSpawn, PlatformPrefab.rotation);
        _nextTileSpawn.z += 4;          
        StartCoroutine(SpawnPlatform());
    }

}

This below is untested code, but i hope it gives you an idea of how to handle the problem. Instead of a coroutine i just used a timer to simplify things. The timer will run and each time the timer runs out we create a platform. When creating a platform we save a reference to it, so we are able to destroy it later. At the moment I used an arbitrary amount of maximum platforms. I hope the comments will help you out with anything that isn’t clear. The most important part of this, is to save a reference to your created objects (in an array or list…), so you can access them later.

public Transform platformPrefab;
public Vector3 nextTileSpawn;

//A list to hold all the instantiated platforms.
public List<GameObject> activePlatforms = new List<GameObject>();
//How many platforms can be active at once?
public int maxPlatforms = 3;

//Timer
public float timerValue = 0.0f;
public float timerMax = 0.5f;

public void Start()
{
	//Some conditions here...
	gameRunning = true;
}


public void Update()
{
	//Increment the timer
	timerValue += Time.deltaTime;
	
	//Has the timer expired?
	if(timerValue >= timerMax)
	{
		//Reset the timer
		timerValue = 0;
		CreatePlatform();
	}
}

public void CreatePlatform()
{
	//First create a new platform and add it to the list.
	activePlatforms.Add(Instantiate(platformPrefab, nextTileSpawn, Quaternion.identity));
	//Increment the position for the next tile.
	nextTileSpawn.z += 4;
	//Check how many tiles are active now, if more than allowed, remove the oldest one.
	if(activePlatforms.Count > maxPlatforms)
	{
		//To many platforms, remove the first one.
		GameObject p = activePlatforms[0];
		//Remove from the list.
		activePlatforms.RemoveAt(0);
		//Destroy the object.
		Destroy(p);
	}
	
}