我正在为Unity iOS制作一个非常简单的垂直滚动游戏。我的游戏出现了不一致的抖动问题。我已经在网上搜索了很多解决方案,但没有找到合适的。我使用的是Unity版本5.3.4 f1。
游戏
- 角色正在下落。我们使用Unity的角色控制器在
Update()
中移动角色(乘以Time.deltaTime
)。 - 相机在
LateUpdate()
中跟随角色(使用Vector3.Lerp()
进行跟随)。 - 由于角色正在下落,障碍物似乎向屏幕上方移动。
- 场景中有1个定向光,用于实时阴影设置。阴影质量为高和硬阴影。
- 场景中没有刚体。分析器中没有主要的峰值。
- 我们拥有非常简单的几何形状和非常少的绘制调用/设置传递调用(平均7个设置传递调用)。
- 我们保持了恒定的60 fps。
- 由于我们正在运行iOS,vSync默认为On,无法禁用。
问题
- 背景元素/障碍物(树木、岩石等)开始无缘无故地抖动。这种行为是不一致的,有时会抖动,有时不会。
- 即使它不抖动,当用户通过触摸输入时,我们也会经历小的卡顿。
我们尝试过的
- 我们已经尝试了所有的
Update()
,LateUpdate()
,FixedUpdate()
,Time.deltaTime
,Time.smoothDeltaTime
,Lerp,将场景减少到几个立方体并删除所有碰撞器和触发器的组合。 - 我们已经研究了以下主题:链接1,链接2,链接3和无数其他主题。
- 最初,我们的游戏以默认的30 fps运行。但经过一些研究,似乎我们的问题是由于“帧速率”和“屏幕刷新率”的差异造成的。(要了解此问题,请参见以下链接)。由于iOS设备的刷新率为60Hz,因此我们将目标帧速率设置为60,我们的游戏保持恒定的60 fps。
- 将目标帧速率设置为60后,抖动已经改善,但现在不稳定。
我已经没有任何想法了,非常感谢任何帮助或指引。
提前致谢。
Vector3.Lerp()
移动相机。我已经测试了相机的移动,它不是问题所在。我还会更新帖子并添加这些信息。 - Anas iqbal