Показать сообщение отдельно
Старый 13.01.2011, 01:18   #6
Evgen
Разработчик
 
Аватар для Evgen
 
Регистрация: 12.01.2011
Адрес: Moscow
Сообщений: 426
Написано 71 полезных сообщений
(для 104 пользователей)
Ответ: C# Быстрый поворот/перемещение множества объектов

Нет не Pro а бесплатная.
Все дела в двух строчках:

cubet[i].Translate(tra);
cubet[i].Rotate(0,tdt*Random.Range(-50, 50),0);
Стоит их закомментировать, как FPS возрастает до 200. А пять вызовов опускают производительность до 100 FPS

Полный исходник:

using UnityEngine;
using System.Collections;

public class NScript : MonoBehaviour {

	public string HelloWorldString;
	GameObject[] cube;
	Transform[] cubet;
	Transform thisTransform;
	public GameObject myPrefab;
	int calls;
    void Start()
    {
		HelloWorldString="Текст из Unity3D!";
		thisTransform = transform;
		
		cube = new GameObject[5000];
		myPrefab=GameObject.CreatePrimitive(PrimitiveType.Cube);
		myPrefab.transform.localScale = new Vector3(10,10,10);
		cubet = new Transform[5000];
        for(int i=0;i<cube.Length;i++){
			cube[i] = (GameObject)Instantiate(myPrefab);
			cube[i].transform.position = new Vector3(Random.Range(0, 1024),Random.Range(400, 600),Random.Range(0, 11024));
			cubet[i]=cube[i].transform;
		}	

    }


    void Update()
    {
        if(Input.GetKeyDown(KeyCode.Escape))Application.Quit();
		calls++;
		float tdt=Time.deltaTime;
		Vector3 tra= thisTransform.forward * tdt*5;		
		for(int i=0;i<cube.Length;i++){
			cubet[i].Translate(tra);
			cubet[i].Rotate(0,tdt*Random.Range(-50, 50),0);
		}
    }
	

	
}
(Offline)
 
Ответить с цитированием