android - Unity3D 修复了 TimeStep - Android FPS 问题

标签 android performance unity-game-engine frame-rate

我不明白为什么,但是当我增加 Unity3D 中时间设置中的固定时间步长时,我仅在 Android 上遇到不良帧问题。

在 iOS 中,我有更好的表现,但 Android 的动画非常非常糟糕..

有人可以告诉我为什么增加固定时间步长会对 FPS 产生问题,但在 Android 上,而不是在 iOS 上。

最佳答案

固定时间步长为 60 (Hz) 意味着 Unity 保证无论帧速率如何,FixedUpdate 方法每秒都会运行这么多次。 FixUpdate甚至可以设置为每帧运行多次。

但是,您无法强制 CPU 每帧/秒执行更多操作。最终这将影响帧速率,因为没有足够的时间在必要的时间内计算和渲染帧。

例如,要获得恒定的每秒 60 帧的速度,必须在 0.01666 秒的时间窗口内计算和渲染每一帧。如果计算和渲染需要 0.017 秒,Unity 将不再渲染 60 fps。如果启用垂直同步(就像在移动设备上一样),每帧恒定时间略高于 0.01666 意味着帧速率将为 30 fps(而不是 55 或其他)。因此,在移动设备上,您更有可能注意到每帧时间持续超过 0.01666 的效果。

如果每秒运行足够的固定更新迭代,则应用程序需要计算更多次,因此每帧需要更长的时间。最终,每帧的固定更新迭代(加上渲染所需的时间)不再在 0.01666 秒内完成,这就是您看到的帧速率下降。

关于android - Unity3D 修复了 TimeStep - Android FPS 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25571052/

相关文章:

Android:长按 ExpandableListView 的 subview ?

android - 在我的 Android 项目上使用 setValue() 方法时,Firebase 出现 StackOverflow 错误

java - 如何监控 JPA 和 Hibernate 执行的慢 SQL 查询

php - 查询MySQL最新评论+评论总数的最有效方式

unity-game-engine - Unity3D 脚本中的 'this' 关键字(c# 脚本、JavaScript)

java - 尝试从 Firebase 数据库中的子值获取 key

android - 像 Draw Something 这样的移动应用程序使用什么应用程序协议(protocol)?

Javascript 声明变量 - 最佳实践

video - 统一: Initializing Microsoft Media Foundation failed

unity-game-engine - Unity ScriptableObjects - 只读字段