编辑器中的 FPS 不错但在设备上却不行(Google Cardboard),如何提高 FPS?

Good FPS in Editor But not on devices(Google Cardboard), How to increase FPS?

我正在开发 Google 纸板游戏。我有 5-10 个精灵,一个有 15-30 个灌木丛的地形(像草一样的单个灌木丛),15 棵树(<64 个顶点的低多边形),一个相机(由 GVR Sdk 提供)。

在编辑器上帧率很好。但是当我在我的 Galaxy S6 上测试它时,FPS 低至 10-20(我附上了一个脚本,可以在文本上获取帧率)。 有什么优化建议吗?

以下是 Unity 编辑器中的详细统计信息:

CPU: 主要 6.0ms

FPS:160(平均)

批次:117

Tris: 6.1k

顶点数:3.3k

我相信你在运行时有很多次使用方法 "GameObject.Find()" 和 "gameobject.GetComponent()"。 这是 unity 开发者最常见的问题。

最好不要在运行时使用它们! 仅在 awakestart[=22 中使用=] 方法。

您需要在 awake 或 start 方法中创建所有需要的 GetComponent<> 并将结果分配给一些全局变量。之后——只需在运行时使用此变量。

这将真正提高您在移动设备上的游戏速度。

确保你的设备没有过热,这看起来很明显,但你不能总是知道它什么时候在你的脸上(我也有一个 S6)。

此外,请确保您没有处于节能模式,这听起来很蠢,但我已经上当了;)

大量可能破坏智能手机游戏性能的因素包括:

  • 确保您没有脚本在更新中做太多工作(尤其是 Instanciate()/Destroy()
  • 不要移动静态物体,就是不要
  • 确保你不使用高分辨率纹理(以我的小经验> 512x512 是,它们是平方的并且分辨率是二的幂

附带说明一下,GetComponents 可能是个问题,@Andrew 已经发布了替代方案,只需在 Start()/Awake() 方法中使用 GetComponent 并存储它们以备后用。