【发布时间】:2017-04-05 16:03:29
【问题描述】:
我正在为 Unity iOS 开发一个非常简单的垂直滚动游戏。我的游戏出现不一致的抖动。我在网上广泛搜索了一个没有任何运气的解决方案。我正在使用 Unity 版本 5.3.4 f1。
游戏
- 一个角色跌倒了。我们正在使用 unity 的角色控制器来移动
Update()中的角色(Time.deltaTime正在成倍增加)。 - 相机正在跟随
LateUpdate()中的角色(使用Vector3.Lerp()跟随)。 - 由于角色向下移动,因此屏幕上的障碍物似乎向上移动。
- 场景中有 1 个定向光,用于设置实时阴影。阴影质量为高阴影和硬阴影。
- 场景中没有刚体。并且探查器中没有明显的峰值。
- 我们的几何结构非常简单,绘制调用/设置传递调用很少(平均 7 个设置传递调用)。
- 我们有恒定的 60 fps。
- 由于我们在 iOS 上运行,vSync 默认情况下处于开启状态且无法禁用。
问题
- 背景元素/障碍物(树木、岩石等)无缘无故开始抖动。行为不一致,有时会抖动,有时不会。
- 即使它不抖动,当用户通过触摸进行输入时,我们也会遇到轻微的卡顿。
我们的尝试
- 我们已经尝试了
Update()、LateUpdate()、FixedUpdate()、Time.deltaTimeTime.smoothDeltaTime、Lerp 的所有组合,将场景缩减为几个立方体并移除所有碰撞器和触发器。 - 我们已经研究过以下线程:Link1、Link2、Link3 和无数其他线程。
- 最初我们的游戏以默认的 30 fps 运行。但经过一番研究,我们的问题似乎是由于“帧率”和“屏幕刷新率”之间的差异。 (要了解此问题,请参阅以下LINK)。由于 iOS 设备的刷新率为 60Hz,我们将目标帧率设置为 60,并且我们的游戏保持恒定的 60 fps。
- 将目标帧速率设置为 60 后,抖动有所改善,但现在不一致。
我完全没有想法。任何帮助或指示将不胜感激。
提前致谢。
【问题讨论】:
-
场景中有多少实时灯光,可以分享一下相机运动的代码吗?
-
楚苏哥。只有一种定向光。我正在使用
Vector3.Lerp()来移动相机。我已经测试了相机的移动,这不是问题。我还将更新帖子并在其中添加此信息。 -
欢迎来到 StackOverflow!如果您通过添加一些代码来更新您的问题,将会更有帮助。如果您还没有阅读,Docs 会这样说:请注意,设置 targetFrameRate 并不能保证该帧速率。由于平台的具体情况可能会出现波动,或者由于计算机速度太慢,游戏可能无法达到帧速率。 另外,您想分享一个带有 deep profile 的 Profiler 的屏幕截图吗?已启用且不限制 targetfps。
-
我遇到了同样的问题;它似乎发生在高度简单化(或几乎空洞)的场景中。我用一个非常非常基本的粒子系统制作了一个场景,只是为了查看项目中没有任何自定义脚本的一些运动。