Быстрый поворот/перемещение множества объектов
Здраствуйте! Язык C#. В Unity новичок, до этого использовал Blitz3D.
Есть массив клонированных объектов, пусть будет 5000 кубов: Код:
cube = new GameObject[5000]; Код:
float tdt=Time.deltaTime; А если обновлять то ~18 FPS. Уж очень большая разница. Неужели расчет занимает так много времени? Может нужно как-то по другому их перемещать/вращать? |
Ответ: C# Быстрый поворот/перемещение множества объектов
надо получить transform каждого кубика отдельно и самого объекта отдельно в начале работы скрипта (например в Start) а потом работать с ними. Получение transform через свойство скрипта - медленно
|
Ответ: C# Быстрый поворот/перемещение множества объектов
Вот так?
Код:
GameObject[] cube; Может при перемещении кубика, автоматический рассчитываются коллизии или еще чего, поэтому так тормозит?! Может как-то еще можно? Вот тут http://unity3d.com/support/documenta...imization.html Пишут про Vector3 массивы, говорят очень быстрые,как их использовать вместе с GameObject? Будет ли прирост? |
Ответ: C# Быстрый поворот/перемещение множества объектов
Вот так:
Код:
GameObject[] cube; |
Ответ: C# Быстрый поворот/перемещение множества объектов
А если кубики с коллайдерами, то конечно надо поставить их в режим IsTrigger хотя бы. А если с RigidBody, то в режим IsKinematic.
|
Ответ: C# Быстрый поворот/перемещение множества объектов
Нет не Pro а бесплатная.
Все дела в двух строчках: Код:
cubet[i].Translate(tra); Полный исходник: Код:
using UnityEngine; |
Ответ: C# Быстрый поворот/перемещение множества объектов
Вот тебе две строчки, каждую можешь попробовать после создания префаба:
PHP код:
Результаты со второй строчкой: Если несколько по иному рассчитывать поворот, то немного можно прибавить кадров: PHP код:
|
Ответ: C# Быстрый поворот/перемещение множества объектов
Вот еще способ добиться лучшего результата:
PHP код:
|
Ответ: C# Быстрый поворот/перемещение множества объектов
Код:
DestroyImmediate(myPrefab.GetComponent<BoxCollider>()); Код:
myPrefab.GetComponent<BoxCollider>().isTrigger = true; Наверно для моей системы 50FPS это предел. |
Ответ: C# Быстрый поворот/перемещение множества объектов
Когда в блитце такое делал, какой результат был?
Я так подозреваю, что без правильного кода, который время обращения к памяти сводил бы к минимуму, ты вряд ли существенного прироста производительности добьешься. |
Ответ: C# Быстрый поворот/перемещение множества объектов
Цитата:
Цитата:
|
Ответ: C# Быстрый поворот/перемещение множества объектов
Цитата:
Код:
void Update() Отмечу в каждом Update меняются координаты всех 6000 кубов в первом for, но трансформируются (transform.position/rotation) только 2000. За три кадра 6000. Тему можно еще развить если обновлять только объекты находящиеся близко к камере или находящиеся в поле зрения камеры. Предполагаю, что первое должно быть проще, а по скорости скорее всего будет небольшая разница. |
Ответ: C# Быстрый поворот/перемещение множества объектов
Ну Вам виднее. Только у вас будет неравномерное перемещение, т.к. 2 обновления по 2000 а одно 1000. Следовательно deltaTime для следующей первой группы в 2000 будет меньше в 2 раза.
PHP код:
PHP код:
PHP код:
PHP код:
|
Ответ: C# Быстрый поворот/перемещение множества объектов
Цитата:
|
Ответ: C# Быстрый поворот/перемещение множества объектов
Цитата:
|
Часовой пояс GMT +4, время: 16:02. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot