我正在通过致电SceneManager.LoadScene
加载我的游戏场景。但是,在构建中加载游戏场景时,有时会获得较长的加载时间。我无法始终如一地重现此问题,但是在调试此问题时,我注意到我可以在第一次播放的每次Unity编辑器(2017.3)中重现此问题。
如果我在启动Unity Editor之后首次进入游戏模式,然后单击游戏内按钮加载我的游戏场景,则分析器显示Application.WaitForAsyncOperationToComplete
花费了大约9000毫秒。我在调试它时遇到了麻烦,因为时间花费在“ Self ms”中。
如果我重新进入播放模式并重复相同的步骤,后续运行将显示WaitForAsyncOperationToComplete
仅花费约200毫秒。如果我重新打开Unity Editor并重复相同的步骤,时间会跳回到9000 ms。
如何在WaitForAsyncOperationToComplete
中调试和修复这么长的“ Self ms”时间?我还想知道是什么会导致打开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的结果类似):
有关后续播放器的事件探查器的屏幕截图,请参见下文(请注意,“ Self ms”降至合理的〜200 ms而不是〜9000 ms):
答案 0 :(得分:2)
我以前在较旧版本的Unity(2017)上看到此错误。自升级以来我还没有看到它
答案 1 :(得分:0)
调试方法
第一步,我通过系统地删除正在加载的场景中的GameObject来确定导致该问题的GameObject,从而调试了该问题。
这样做,我发现当我从场景中删除特定的GameObject时,较长的加载时间消失了。
(鉴于我能够用以前的方法解决问题,因此我没有直接研究如何调试较长的Application.WaitForAsyncOperationToComplete
“ Self ms”时间。)