Сообщение от pax
Последний вариант не устраивает? У меня показывал 150+ кадров. А результат практически не отличим.
Тут есть вариант считать матрицы вручную и вручную выводить кубики на экран. Можно я думаю еще ускорить этот процесс, но это только в Pro версии Unity.
|
Я понял суть вашего последнего варианта. Спасибо

! только я сделал немного по другому "более гибко". Ну и конечно ничего на свете лучше Sin,Cos нету =)
void Update()
{
if (Input.GetKeyDown(KeyCode.Escape)) Application.Quit();
calls++;
rot=rot+2.5f;//Random.Range(-5, 5);
float speed=Time.deltaTime*25;
float deg2rad=rot*0.0174532925f;
for(int i = 0; i<cube.Length; i++){
cubex[i]+=Mathf.Sin(deg2rad)*speed;
cubey[i]+=Mathf.Cos(deg2rad)*speed;
}
int updates=2000;
int block=(updates*calls)%cube.Length;
int end=block+updates;
if(end>cube.Length)end=cube.Length;
for(int i = block; i<end; i++){
cube[i].transform.position = new Vector3(cubex[i],500,cubey[i]);
cube[i].transform.rotation = Quaternion.AngleAxis(rot,Vector3.up);
}
}
Если взять 6000 кубов и за один Update трансформировать 2000 скорость 90FPS.
Отмечу в каждом Update меняются координаты всех 6000 кубов в первом for, но трансформируются (transform.position/rotation) только 2000. За три кадра 6000.
Тему можно еще развить если обновлять только объекты находящиеся близко к камере или находящиеся в поле зрения камеры. Предполагаю, что первое должно быть проще, а по скорости скорее всего будет небольшая разница.