Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# XNA中的随机帧率增加_C#_Performance_Optimization_Xna - Fatal编程技术网

C# XNA中的随机帧率增加

C# XNA中的随机帧率增加,c#,performance,optimization,xna,C#,Performance,Optimization,Xna,当我在PC上运行游戏(使用c#/XNA 4.0开发)时,我遇到了随机帧速率增加的问题。这些增加会在游戏过程中造成口吃。这通常发生在游戏启动时,而且频繁到令人讨厌的程度 例如,我的FPS计数器将从62跳到85(造成轻微的口吃),然后返回到62,并在62/63 FPS之间持续保持三分钟,然后跳到78,然后再次返回到62/63。FPS很少真正降到60以下 你知道发生了什么事吗 编辑-在下面添加我的FPS代码(2013年6月2日) 希望这些额外的信息能有所帮助 结束编辑它可以是没有看到代码的任何东西。只

当我在PC上运行游戏(使用c#/XNA 4.0开发)时,我遇到了随机帧速率增加的问题。这些增加会在游戏过程中造成口吃。这通常发生在游戏启动时,而且频繁到令人讨厌的程度

例如,我的FPS计数器将从62跳到85(造成轻微的口吃),然后返回到62,并在62/63 FPS之间持续保持三分钟,然后跳到78,然后再次返回到62/63。FPS很少真正降到60以下

你知道发生了什么事吗

编辑-在下面添加我的FPS代码(2013年6月2日)

希望这些额外的信息能有所帮助


结束编辑

它可以是没有看到代码的任何东西。只要你在运动计算中使用
gameTime.ElapsedGameTime
,它就不会导致任何口吃问题

例如:

sprite.Location += sprite.Velocity * (float)gameTime.ElapsedGameTime.TotalSeconds;

你首先需要找出是什么代码导致了这个问题,然后你可以问一些具体的问题,关于如何解决你的问题。如果没有实际的代码,我们所能做的就是推测可能导致问题的原因。你如何计算FPS?你的vsync和固定更新率设置是什么?在原始问题中添加了我的FPS代码。我没有使用vsync和固定更新率设置,可能这是我的问题?我正在尝试;pos+=方向指杆*速度*游戏时钟;游戏时钟在哪里;Vector2 gameClock=新向量2((float)gameTime.ElapsedGameTime.TotalSeconds,(float)gameTime.ElapsedGameTime.TotalSeconds);在我的Player.cs更新方法中。当我添加上述代码时,玩家将停止向任何方向移动,当我取出gameClock时,它将恢复正常移动。@Bilbo不相关点,但你可以将
向量2
直接乘以
浮点值。@Bilbo如果这样做,你必须加快速度。你基本上是在除以数量无论更新率是多少(通常为30或60),您都会移动。因此,您必须将
速度
提高一个类似的因素。但是,考虑到运行时间是正确的方法,应该可以使动画平滑。这在帧速率跳跃期间有一点帮助,但在帧速率大幅增加时仍然会出现波动,但更大的问题是随机帧速率增加e本身。我还需要再深入一点,我认为这与我正在使用的游戏组件有关。谢谢你的帮助。我对答案进行了编辑,因为我找到了一个更大问题的解决方案,但由于某种原因,它被编辑掉了。下面是额外的帮助-在Game.cs中,我设置的是FixedTimeStep=false;而targeteFalsedTime=new TimeSpan(0,0,0,0,16);。在我的GameComponents类中,我还设置了((Game1)Game)。TargetReleasedTime=new TimeSpan(0,0,0,0,16);。此实现修复了我的帧速率问题。现在所有内容都在每秒61-63帧之间运行。希望这对我有所帮助。
public class SpriteManager : Microsoft.Xna.Framework.DrawableGameComponent
{
    //Manager code
} 

public class FontManager : Microsoft.Xna.Framework.DrawableGameComponent
{
    //Manager code
}
sprite.Location += sprite.Velocity * (float)gameTime.ElapsedGameTime.TotalSeconds;