Вот так:
GameObject[] cube;
Transform[] cubet;
Transform thisTransform;
void Start()
{
cube = new GameObject[5000];
...
cubet = new Transform[5000];
thisTransform = transform;
for(int i=0;i<cube.Length;i++){
...
cubet[i]=cube[i].transform;
}
}
void Update()
{
Vector3 translation= thisTransform.forward * tdt*5;
float tdt=Time.deltaTime;
for(int i=0;i<cube.Length;i++){
cubet[i].Translate(translation);
cubet[i].Rotate(Vector3.up*tdt*Random.Range(-50, 50));
}
}
Если у тебя Pro версия Unity, то посмотри в профайлер, какая операция больше времени жрет. Update или отрисовка.