Редактор Unity: длительное время Application.WaitForAsyncOperationToComplete «Self ms» после SceneManager.LoadScene - PullRequest
0 голосов
/ 04 июля 2018

Я загружаю свою игровую сцену, звоня SceneManager.LoadScene. Тем не менее, я иногда получаю много времени при загрузке игровой сцены в мои сборки. Я не смог воспроизвести это последовательно, но при отладке этой проблемы я заметил, что могу воспроизвести эту проблему каждый раз в Редакторе Unity (2017.3) в первой игре.

Если я впервые вхожу в режим игры после запуска редактора Unity, а затем нажимаю внутриигровую кнопку, чтобы загрузить мою игровую сцену, профилировщик показывает, что Application.WaitForAsyncOperationToComplete занимает ~ 9000 мс. У меня проблемы с отладкой, потому что время тратится на "Self ms".

Если я снова вхожу в режим воспроизведения и повторяю те же шаги, последующие прогоны показывают, что WaitForAsyncOperationToComplete занимает всего ~ 200 мс. Время снова возрастает до 9000 мс, если я снова открываю редактор Unity и повторяю те же шаги.

Как я могу отладить и исправить это длительное время "Self ms" в WaitForAsyncOperationToComplete? Мне также интересно, что могло вызывать эту длительную задержку только при первом воспроизведении после открытия редактора Unity (и что сохраняется в редакторе Unity между запусками режима воспроизведения).


Моя иерархия профилировщика выглядит следующим образом:

EarlyUpdate.UpdatePreloading
- Loading.UpdatePreloading
-- UpdatePreloading
--- Application.WaitForAsyncOperationToComplete [*takes about 9000 ms, 8500 self ms*]
---- PreloadSingleStep [*takes about 500 ms*]
----- Application.LoadLevelAsync Integrate
----- Loading.AwakeFromLoad
----- (...)

См. Ниже снимок экрана профилировщика при первом воспроизведении после запуска Unity Editor (обратите внимание, что Deep Profile отключен, но результат аналогичен включенному Deep Profile):

record-slow-issue.PNG

См. Ниже снимок экрана профилировщика для последующих прохождений (и обратите внимание, что значение "Self ms" уменьшено до более ~ 200 мс, а не ~ 9000 мс):

record-no-longer-slow-after-first-editor-play

1 Ответ

0 голосов
/ 12 июля 2018

Подход к отладке

В качестве первого шага я отладил проблему, систематически удаляя GameObjects в загружаемой сцене, чтобы определить, какой GameObject вызывал проблему.

Делая это, я обнаружил, что длительное время загрузки исчезло, когда я удалил определенный GameObject со сцены.

(Я не исследовал, как отлаживать долгое Application.WaitForAsyncOperationToComplete «само время мс» непосредственно, учитывая, что мне удалось решить мою проблему с моим предыдущим подходом.)

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