我已经成功地使用Farseer使用XNA开发了我的一款游戏。游戏在 Windows 和 WP7 中运行就像一个魅力。我目前正在使用Monotouch和Monogame将我的游戏移植到IOS中。我已经成功地编译和使用了 Farseer,并在我的游戏的第一个版本中移植到 Monotouch 和 Monogame。除了表演,一切都很好。游戏在 iPhone 设备上运行速度要慢得多。我做了一些代码调查,似乎主要瓶颈是 Farseer。当它必须管理超过 5-6 个带有单个夹具(圆圈)的物体时,它变得非常慢。
阅读文档时,我注意到要调整 Farseer,我可以更改 Setting 静态类的值:
表现
为了充分利用引擎,您应该尝试遵循以下指南:
启用睡眠 睡眠使您可以在世界上拥有大量的身体。它还可以增加发动机的稳定性,因为一堆物体中的小运动不会在堆栈中传播。睡眠体的开销很小,因此建议启用它。
禁用 CCD 连续碰撞检测可防止隧道效应,但会以性能为代价。如果隧道没有问题,则应该一起禁用 CCD。
最小化位置和速度迭代次数 大量迭代使引擎更稳定,但以性能为代价。您应该调整这些值以适合您的游戏。
坏消息是,如果我更改该类的任何值,似乎什么都不会发生。我试图改变值如下:
EnableDiagnostics = false
VelocityIterations = 6
PositionIterations = 2
ContinuousPhysics = false
我也尝试使用较低的值,例如 VelocityIterations = 1 但似乎没有任何改变......
有人已经更改了设置类值以提高性能吗?