2012-02-11 6 views
1
using System; 
using Microsoft.Xna.Framework; 
using Microsoft.Xna.Framework.Content; 
using Microsoft.Xna.Framework.Graphics; 

namespace proj 
{ 
    public class game : Microsoft.Xna.Framework.Game 
    { 
     GraphicsDeviceManager graphics; 
     public static SpriteBatch sprite_batch; 
     public static Texture2D texture; 

     public game() 
     { 
      graphics = new GraphicsDeviceManager(this); 
     } 

     protected override void Initialize() 
     { 
      graphics.PreferredBackBufferWidth = 300; 
      graphics.PreferredBackBufferHeight = 300; 
      graphics.ApplyChanges(); 
      Content.RootDirectory = "Content"; 
      sprite_batch = new SpriteBatch(GraphicsDevice); 
      texture = Content.Load<Texture2D>("a"); // 1 x 1, white 
      base.Initialize(); 
     } 

     protected override void Update(GameTime game_time) 
     { 
      base.Update(game_time); 
     } 

     protected override void Draw(GameTime gameTime) 
     { 
      GraphicsDevice.Clear(Color.Black); 
      sprite_batch.Begin(); 
      if (gameTime.IsRunningSlowly) 
      { 
       sprite_batch.Draw(texture, 
        new Rectangle(50, 50, 200, 200), Color.OrangeRed); 
      } 
      sprite_batch.End(); 
      base.Draw(gameTime); 
     } 
    } 
} 

オレンジ色の正方形はほぼ常に見えますが、ほとんど何も起こっていません。C#XNAは常にIsRunningSlowly

60更新何と60起こるべきである120回のほとんど空の関数呼び出しを行う、何も描画しないと、彼らは「ゆっくり実行している」ことがないようにプログラムのためにこれをで行うには全体秒を持って、まだgameTime.IsRunningSlowly戻りTrueほぼすべての時間。

私のコンピュータはこれ以上の処理をするのに十分速いと確信しています。何が起こっていますか? gameTime.IsRunningSlowlyを使用できるようにする必要があります。正しく動作していないとできません。

+0

を回避すること、ゲームや負荷のリソースを起動するための正しい方法があることが最も可能性が高いです、あなたは、コードをラップに行く何かを持っていますか?私は全く新しいゲームプロジェクトを開いて、Initialize and Drawにある実際のコードをコピーして、私は同じ経験をしません。実際に、オレンジ色の四角形を描く線にブレークポイントを置くと、5分間私を楽しませることには決してヒットしませんでした。 –

+0

私は今何の問題もなく、私はコードを変更していません。これは、イライラしていると同時に非常に良いです。 – alan2here

+0

あなたのウイルス対策は以前より早く実行されていて、システムリソースを大量に使用していたのでしょうか?そのようなものは、あなたのシステムがゆっくりと走り始める結果、ゲームがゆっくりと実行される原因となります。 –

答えて

1

何もしない。問題はそれだけですべて魔法のようにクリアされます!

真剣に、IsRunningSlowlyはあなたに嘘をつけてはいけません。基本的なゲームプロジェクトでは、システムリソースが不足していない限りTrueを返すべきではありません。 Trueを常に返す場合は、他のプロセスが実行されているかどうかを見てみることをおすすめします。

IsRunningSlowlyは、最初からそこにあったXNAフレームワークの機能の1つであり、間違った報告をして奇妙なバグが発生した可能性があります。

PCを再起動してからもう一度お試しください。問題が解消されない場合は、起動時にシステムリソースを使用している他のプロセスや現在のハードウェアの設定を調べる必要があります(空のゲームプロジェクトが60 FPSで動作する必要はあまりありません。 XNAデフォルト)

+0

そうだね:¬)おそらくマイクロソフトは私が離れている間ステルスアップデートを出したのだろうか:¬P – alan2here

+0

ええ、それはアンドラかもしれないと思った。このケースで正解だったので抵抗するのは難しかった! –

+0

そこに、私は答えをあまり軽視しなかった。 –

1

この行をgame()コンストラクタに追加します。これはできるだけ頻繁にゲームコールの更新を行うはずです。

    this.IsFixedTimeStep = false; 
+0

ありがとうございますが、できるだけ多くの情報を更新したくありません。私は60(F、U)PSに満足しています。また、何か変わっていないにもかかわらず、それは何とか年齢を過ごしていたにもかかわらず、どうにかして問題を解決したようです。上記のコメントを参照してください。 – alan2here

+0

私は "FUPS"か "F&UPS"をコインできるかどうか疑問です。 – alan2here

0

私は全く同じ問題があります。ゲームは遅く実行されていますが、実際にはPCのリソースを使用していません 私は自分のコードで、私がゲームを開始するまでドラッグされていることに気付きました。それは一番遅れてそこにとどまるだろう。ブレークポイントのようなものは、ゲームがゆっくりと実行されるため、デバッグは非常に困難です。

最終的には、外部タイマーを使用して、ゲームタイマーと比較することで問題を追跡しました。私はゲームが開始上の第二を失ったが、その後、細かい走ったゲーム/リアルタイムで 1/2 5/6 10/11

のような結果が得られました。

これは、標準ベースのゲームテンプレートではありません。この問題

関連する問題