Windows phone 7 Monogame(monoXNA)为手机加热

Windows phone 7 Monogame(monoXNA)为手机加热,windows-phone-7,optimization,windows-phone-8,xna-4.0,monogame,Windows Phone 7,Optimization,Windows Phone 8,Xna 4.0,Monogame,我已将XNA项目转移到mono。一切正常。但我注意到手机(HTC 8x)发热了。调试中的原生XNA游戏运行良好。 分辨率提高了(480x800比720x1280),帧速率也提高了(30比55)。 关于优化有什么建议吗?什么是最繁重的操作? 我的游戏是一个简单的2d arkanoid游戏,我不知道什么会让手机发热。你应该限制你在所有设备上的游戏以恒定的帧速率运行 要在Xna中执行此操作,您需要: TargetElapsedTime = TimeSpan.FromTicks(333333); //3

我已将XNA项目转移到mono。一切正常。但我注意到手机(HTC 8x)发热了。调试中的原生XNA游戏运行良好。 分辨率提高了(480x800比720x1280),帧速率也提高了(30比55)。 关于优化有什么建议吗?什么是最繁重的操作?
我的游戏是一个简单的2d arkanoid游戏,我不知道什么会让手机发热。

你应该限制你在所有设备上的游戏以恒定的帧速率运行 要在Xna中执行此操作,您需要:

TargetElapsedTime = TimeSpan.FromTicks(333333); //30 fps
this.IsFixedTimeStep = true;
将fps从55限制到30将减少cpu工作,因此不会产生更多热量


如果这不能帮助检查您的一些后台线程是否没有做一些密集的工作

这很奇怪。我注释掉了主类中所有的update和draw方法。没有任何变化。最好的办法是在代码上运行性能分析器。也许可以尝试一个固定的时间步长,我认为默认情况下XNA总是每秒更新屏幕x次。(我记不起确切的比率)。您可以使用
Game.superssdraw
,正如此问题的公认答案中所建议的那样:请注意,在回答问题时,解决方案实际上并没有帮助该问题的提问者。它可能对你有帮助,也可能没有帮助。如果你试图创建一个“固定步骤”的游戏循环,你应该只做你建议的事情。许多游戏使用可变步长循环,因此不需要“恒定”帧速率,因为它们希望利用硬件,并尽可能平滑地运行。有比严格限制FPS更好的方法来减少热量。我强烈建议在回答像这样的问题之前做更多的研究。@Strife根据msdn.microsoft.com:在一个固定步骤的游戏循环中,一旦targetExpressedTime过去,游戏调用就会更新。在更新被调用后,若并没有时间再次调用更新,游戏将调用Draw。调用Draw后,若并没有时间再次调用Update,游戏将一直闲置,直到调用Update为止。FixedTimeStep不会影响您的游戏性,如果有更好的方法来解释为什么你没有给出答案呢?我没有给出答案,因为正确的答案是我们无法知道为什么他的应用程序在没有他对手机进行分析并找到导致CPU和/或GPU处理如此繁重的代码区域的情况下会使手机升温。有关固定步长循环与可变循环的更多信息,请参阅以下讨论: