我们的游戏以每秒30帧的速度运行,这是为了游戏体验而故意设定的。结果显示,在场景加载时,同样的帧率限制也生效了,这并不太有帮助,因为在场景加载时,没有什么东西在被渲染,需要稳定的30帧率。我们只希望它能尽快结束。
我们对一个慢速场景加载进行了分析,发现WaitForTargetFPS在占用了70%的帧时间。CPU完成了它的工作后,就一直等待着,直到达到30帧率限制,这样就白白浪费了很多时间。
解决方案很简单,仅在场景加载时取消帧率限制,然后恢复之前的设置:
int previous = Application.targetFrameRate;
Application.targetFrameRate = -1;
await LoadSceneAsync(...);
Application.targetFrameRate = previous;
从9.5秒的场景加载时间缩短到了3秒。
如果你的加载时间与 profiler 提供的信息不符,请检查WaitForTargetFPS占用的时间占比是不是很大,才去追究 Instantiate/GC 的问题。
评论 (0)