我正在为 Unity iOS 开发一个非常简单的垂直滚动游戏。我的游戏出现不一致的抖动。我在网上广泛搜索了一个没有任何运气的解决方案。我正在使用 Unity 版本 5.3.4 f1。
游戏
- 一个角色正在倒下。我们正在使用统一的角色控制器来移动角色
Update()
(Time.deltaTime
正在成倍增加)。 - 相机正在跟随中的角色
LateUpdate()
(Vector3.Lerp()
用于跟随)。 - 由于角色正在向下移动,因此障碍物似乎正在向上移动屏幕。
- 场景中有 1 个定向光,用于设置实时阴影。阴影质量是高阴影和硬阴影。
- 场景中没有刚体。并且探查器中没有大的尖峰。
- 我们有非常简单的几何图形和很少的绘图调用/设置传递调用(平均 7 个设置传递调用)。
- 我们有恒定的 60 fps。
- 由于我们在 iOS 上运行 vSync 默认为 On 且无法禁用。
问题
- 背景元素/障碍物(树木、岩石等)无缘无故开始抖动。行为不一致,有时会抖动,有时不会。
- 即使它没有抖动,当用户通过触摸进行输入时,我们也会遇到小的卡顿。
我们尝试过的
- 我们已经尝试了
Update()
,LateUpdate()
,FixedUpdate()
,Time.deltaTime
Time.smoothDeltaTime
, Lerp 的所有组合,将场景减少到几个立方体并移除所有对撞机和触发器。 - 我们已经研究了以下线程:Link1、Link2、Link3和无数其他线程。
- 最初,我们的游戏以默认的 30 fps 运行。但经过一番研究,我们的问题似乎是由于“帧率”和“屏幕刷新率”之间的差异。(要了解此问题,请参阅以下链接)。由于 iOS 设备的刷新率为 60Hz,我们将目标帧率设置为 60,并且我们的游戏保持恒定的 60 fps。
- 将目标帧速率设置为 60 后,抖动有所改善,但现在不一致。
我完全没有想法。任何帮助或指针将不胜感激。
提前致谢。