Uma pratica minha, em questão de "objetos a serem destruídos" na cena, é colocar um tempo de destruição no objeto. Inclusive fiz isso no meu script, e funcionou super bem. O código fica assim:
public class Obstaculos : MonoBehaviour
{
[SerializeField]
private float velocidade = 0.5f;
private float tempoDestroi = 4f;
[SerializeField]
private float variacaoY = 1.8f;
void Awake()
{
this.transform.Translate(Vector3.up * Random.Range(-variacaoY , variacaoY));
}
void Update()
{
this.transform.Translate(Vector3.left * this.velocidade * Time.deltaTime);
Destroy(gameObject, tempoDestroi);
}
}