Профайлер Unity Device.present

При попытке оптимизировать мою игру самой большой проблемой, кажется, является device.present. Просматривал некоторые форумы, и я не мог найти каких-либо полезных ответов. Какова обычно основная проблема, связанная с этим?

введите здесь описание изображения


person Richarrd82    schedule 19.06.2017    source источник
comment
Возможно, он ждет Vsync/Vblank. Часто вызвано слишком быстрым/медленным движением.   -  person MX D    schedule 19.06.2017
comment
Ну, я установил Vsync в QulatiySettings на «Не синхронизировать».   -  person Richarrd82    schedule 19.06.2017
comment
На какое конкретно устройство вы ориентируетесь? Насколько я знаю, некоторые устройства используют Vsync   -  person MX D    schedule 19.06.2017
comment
Сейчас я тестирую на Android, но в будущем я хотел бы перейти на IOS.   -  person Richarrd82    schedule 19.06.2017
comment
Насколько мне известно, андроид применяет Vsync.   -  person MX D    schedule 19.06.2017
comment
Это... много PresentAndSync. Намного больше, чем необходимо. Это странно.   -  person Draco18s no longer trusts SE    schedule 19.06.2017


Ответы (1)


Есть много вещей, которые могут вызвать это, но основная причина заключается в том, что поток блокируется графическим драйвером, чтобы позволить графическому процессору наверстать упущенное.

Это конкретные причины:

1. Эффекты изображения

Проверьте свою камеру. Если у вас есть эффекты изображения, такие как Слой бликов, Сглаживание и другие, отключите их.

2Эффекты .UI

Проверьте все свои изображения, RawImages и тексты. Если у вас есть компонент Outline, Shadow или Position As UV1, прикрепленный к компонентам Images, RawImages и Texts, это может вызвать проблему. Обычно, когда к одному Image, RawImage и Text прикреплено несколько таких файлов.

3. Плохие настройки освещения

Выберите источник света и убедитесь, что для параметра Разрешение в разделе Тип тени не установлено значение Очень высокое разрешение.

введите описание изображения здесь

4. В разделе Настройка качества измените счетчик вертикальной синхронизации на Не синхронизировать.

5. Проверьте наличие спрайтов и изображений с 0 альфа-каналом, а затем отключите их.

6. В Настройках проигрывателя отключите Auto Graphics API, затем измените Graphics API на OpenGLES2< /эм>.

7. Пользовательские шейдеры

Используете ли вы пользовательские шейдеры (нестандартные шейдеры)? Отключите его временно. Эта проблема может быть вызвана дорогими или плохо написанными шейдерами.


Это обычные проблемы. Вполне возможно, что у вас другая проблема. Я предлагаю вам включать/отключать элементы один за другим, и вы, скорее всего, обнаружите проблему.

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

person Programmer    schedule 19.06.2017
comment
О, также проверьте пакетную обработку. Редактор Unity, окно игры, вверху справа, нажмите stats. Обычно это проявляется в виде задержки, равной количеству вызовов Camera.Render › Draw, но возможно, что числа запутываются из-за времени синхронизации. Для мобильных устройств чем больше вызовов отрисовки, тем хуже производительность; для мобильных устройств вы хотите, чтобы это число было меньше 100, в идеале меньше 10. Высокие показатели пакетной обработки — меньше вызовов отрисовки и всевозможные вещи нарушают пакетную обработку. - person Draco18s no longer trusts SE; 19.06.2017
comment
Это тоже возможная проблема. - person Programmer; 19.06.2017