iOS FPS在角色移动时帧率低,探查器显示Physics.Simulate占用cpu时间

时间:2013-04-08 12:53:27

标签: iphone ios performance unity3d physics

我们为iOS开发FPS游戏。玩家角色是标准资产(移动)的第一人称控制。它附有标准的字符控制器。

我们现场有7个敌人每个敌人都有一个非运动的RigidBody。当玩家靠近时,敌人会移动到玩家

场景有5500个三角形/ 6000个顶点当玩家不移动时,我们在iPhone 4上有20-25个fps。当玩家开始移动时,fps降至7-10。

此外,我们通过直接更改变换来移动敌人,而不是通过调用AddForce。

在分析器中,我们可以看到,当玩家移动时,Physics.Simulate占用了大约60%-70%的cpu。

我们应该如何解决这个问题?

我们是Unity和3D的新手。抱歉我的英文。

1 个答案:

答案 0 :(得分:4)

根据Unity的文档,在iOS设备中使用物理引擎会有性能损失,因为它严重依赖于浮点数操作。 http://docs.unity3d.com/Documentation/Manual/iphone-basic.html

为了提高性能,正如文档所示,避免网格碰撞器,设置低固定帧率,并启用Rigibody插值。

  

我可以制作使用重物理的游戏吗?   答:物理学可能很贵   在iOS上它需要大量的浮点数运算。您   如果可能的话,应该完全避免MeshColliders,但他们可以   如果他们真的有必要使用。要提高性能,请使用   使用编辑 - >时间 - >固定增量时间的低固定帧速率。帧率   建议使用10-30。启用刚体插值以实现平滑   使用低物理帧速率时的运动。为了要达到   完全流畅的帧速率没有振荡,最好选择   根据游戏的平均帧率修复deltaTime值   上iOS。建议使用1:1或一半的帧速率。对于   例如,如果你获得30 fps,你应该使用15或30 fps进行修复   帧速率(0.033或0.066)