Почему мой метод transform.position вызывается через OnMouseDown () так медленно? - PullRequest
0 голосов
/ 03 февраля 2019

В моем коде есть следующий метод:

private void OnMouseDown()
{
    cube.transform.position = new Vector3(0, 1, 0);
}

При нажатии на gameObject этот метод вызывается.Изменение положения куба занимает много времени (не более секунды, но все же долго, не менее полсекунды).Это влияет на игровой процесс пользователя.

Если я не изменю положение куба, но, например, его материала, он все еще будет медленным.Так что я знаю, что это не связано со строкой в ​​моем событии OnMouseDown ().

Обратите внимание, что у меня есть около 35 импортированных трехмерных сеток в моей сцене, а также более 50 примитивных игр.объекты.Это как-то связано с медленным методом?Потому что, когда я делаю пустой проект Unity всего с 2 gameObjects, метод быстрый.

Это из-за моей полной сцены?Есть идеи?Спасибо!

Если кто-то знает, как ускорить его, я бы хотел знать!

РЕДАКТИРОВАТЬ: Если я удаляю все мои 3D-сетки, метод быстрый ...

Ответы [ 2 ]

0 голосов
/ 04 февраля 2019

раствор

Попробуйте проверить, не используются ли тяжелые материалы, которые могут замедлить процедуру.Игра становится медленной, когда объекты добавляются в проект, и это разрушает общую эффективность игры.Это происходит со мной, когда я использовал слишком тяжелые модели в проекте, общая скорость игры снижается.Я заменил их легкими моделями грузовиков, и проблема была решена.

0 голосов
/ 04 февраля 2019

Если ваше трансфомальное дерево не заполнено детьми, это должно быть почти мгновенно, это одна из тех вещей, для которых Unity была разработана быстро, поэтому я думаю, что это связано с сетями, которые вы импортируете.Он не должен иметь слишком много вершин, слишком много материалов и слишком много объектов.Вы можете попытаться просмотреть ваши объекты с помощью пакета 3D-редактора (blender?) И объединить куски в отдельные объекты.

Если единица запаздывает, когда вы перемещаете объект, это может означать, что у него слишком много отдельных преобразований впроцесс.Если ваша сцена интенсивна, вы можете получить большую производительность, «объединив» ее, объединив отдельные объекты в более крупные сетки (те, которые живут на графическом процессоре и стоят по времени на процессоре, а не на процессоре).

Возможно также, чтоВ одной или нескольких импортированных сетках слишком много вершин / треугольников.Если у вас есть 10fps, вы можете использовать более легкие сетки и как можно меньше отдельных GameObjects (в идеале вы хотите, чтобы среда состояла из нескольких комбинированных сеток (для включения отбраковки), а не тысяч объектов)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...