Performance Unity编辑器:long Application.WaitForAsyncOperationToComplete“;自我管理;SceneManager.LoadScene之后的时间

Performance Unity编辑器:long Application.WaitForAsyncOperationToComplete“;自我管理;SceneManager.LoadScene之后的时间,performance,unity3d,Performance,Unity3d,我正在通过呼叫加载我的游戏场景。然而,在我的构建中加载游戏场景时,我偶尔会遇到很长的加载时间。我无法始终如一地重现这个问题,但在调试这个问题时,我注意到我可以在第一个剧本的Unity Editor(2017.3)中每次重现这个问题 如果我在Unity Editor启动后第一次进入游戏模式,然后单击游戏内按钮加载游戏场景,探查器显示应用程序。WaitForSyncOperationToComplete需要约9000毫秒。我调试它时遇到问题,因为时间花在“Self ms”上。 如果我重新进入播放模式

我正在通过呼叫加载我的游戏场景。然而,在我的构建中加载游戏场景时,我偶尔会遇到很长的加载时间。我无法始终如一地重现这个问题,但在调试这个问题时,我注意到我可以在第一个剧本的Unity Editor(2017.3)中每次重现这个问题

如果我在Unity Editor启动后第一次进入游戏模式,然后单击游戏内按钮加载游戏场景,探查器显示
应用程序。WaitForSyncOperationToComplete
需要约9000毫秒。我调试它时遇到问题,因为时间花在“Self ms”上。

如果我重新进入播放模式并重复相同的步骤,后续运行显示
等待同步操作完成
只需约200毫秒。如果我重新打开Unity Editor并重复相同的步骤,时间会跳回到9000毫秒

如何在
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处于打开状态类似):

请参见下面的profiler在后续播放过程中的屏幕截图(请注意,“Self ms”是一个更合理的~200 ms,而不是~9000 ms):


调试方法

作为第一步,我通过系统地删除正在加载的场景中的游戏对象来调试问题,以确定是哪个游戏对象导致了问题

这样做,我发现当我从场景中删除一个特定的游戏对象时,长时间的加载时间消失了


(我没有研究如何调试一个长的
应用程序。如果我能够用以前的方法解决我的问题,请直接等待SyncOperation完成
“Self ms”时间。)

调试方法

作为第一步,我通过系统地删除正在加载的场景中的游戏对象来调试问题,以确定是哪个游戏对象导致了问题

这样做,我发现当我从场景中删除一个特定的游戏对象时,长时间的加载时间消失了


(我没有研究如何调试一个长的
应用程序。如果我能够用以前的方法解决我的问题,那么直接等待SyncOperationToComplete
“Self ms”时间。)

我以前在旧版本的Unity(2017)上看到过这个错误。自从升级后,我就没有看到过这个错误。我以前在Unity(2017)的旧版本上看到过这个错误。我升级后就没见过它了