当我在 PC 上运行我的游戏(使用 c#/XNA 4.0 开发)时,我遇到了随机帧率增加。这些增加会在游戏过程中造成卡顿的影响。这通常发生在游戏启动时,并且频率足以令人讨厌.
例如 - 我的 FPS 计数器将从 62 跳到 85(导致轻微的卡顿)然后回到 62 并在 62/63 FPS 之间保持三分钟,然后跳到 78 然后再次回到 62/63。FPS 实际降至 60 以下的情况很少见。
关于发生了什么的任何想法?
编辑 - 在下面添加了我的 FPS 代码 (02.06.2013)
namespace Game
{
class FPSDebuggerFont : Font
{
//int totalScore;
//FramesPerSecond (FPS) debug variables
int totalFrames = 0;
int fps = 0;
int elpaseMilliseconds = 1000;
string fpsText;
public FPSDebuggerFont(SpriteFont scoreFont, String text, Vector2 pos, Color color, float scale, float layerDepth)
: base(scoreFont, text, pos, color, scale, layerDepth)
{
}
public void FPSTime(GameTime gameTime)
{
//Algorithm for FPS debugging
elpaseMilliseconds -= (float)gameTime.ElapsedGameTime.Milliseconds;
if (elpaseMilliseconds < 0)
{
//FPS debugg info
fps = totalFrames;
elpaseMilliseconds = 1000;
totalFrames = 0;
}
}
public override void Update(GameTime gameTime)
{
FPSTime(gameTime);
}
public override void Draw(GameTime gameTime, SpriteBatch sB)
{
totalFrames++;
fpsText = "Frames Per Second: " + fps;
sB.DrawString(scoreFont, fpsText, pos, color, 0, Vector2.Zero, scale, SpriteEffects.None, layerDepth);
}
}
}
为澄清起见,我不确定如何在不添加整个项目的情况下添加更多关于此的代码。但我当然可以添加更多信息;除了我的 Game 类,我还有两个使用 XNA 的 GameComponent 功能的类(SpriteManager、FontManager),每个类都包含自己的 Load Content、Update 和 Draw 方法,示例如下;
public class SpriteManager : Microsoft.Xna.Framework.DrawableGameComponent
{
//Manager code
}
public class FontManager : Microsoft.Xna.Framework.DrawableGameComponent
{
//Manager code
}
希望这些附加信息有所帮助。
结束编辑