7

console.out.writeline() を使用して、XNA ゲームのさまざまなスプライトに属する座標を出力します。しかし、数秒後、ゲームは非常に遅くなり始め、ほとんど停止します.
(コンソールへの書き込みを行わない場合は、パフォーマンスに問題はありません)。(スプライトの位置は update メソッドごとに書かれています)

ゲームのパフォーマンスを損なわずにコンソールに書き込む方法はありますか?

4

5 に答える 5

8

コンソールの代わりにログ ファイルに書き込むことはできますか? バッファリングとスクロール、表示などの欠如により、それはより高速になる可能性があります.

これが実行されている間、実際にコンソールを起動していますか? もしそうなら、興味がないときは最小化してみてください。私の推測では、問題を引き起こしているのはスクロールです。

編集: わかりました、いくつかの証拠が整っているようです。

いくつかのテスト... XNA はインストールしていませんが、コンソールへのさまざまな書き込み方法は興味深いものです。0 ~ 99999 の数字をさまざまなコンソールに書き込みました。

  • WinForms アプリとして、デバッガーの下で、Visual Studio コンソールへ: 135000ms、コンソールが表示されているか覆われているかにかかわらず。
  • WinForms アプリとして、デバッガーの下で、ファイルへの書き込み: 160ms
  • コンソール アプリとして、デバッガーの下ではなく、コンソールを最小化: 4149ms
  • コンソール アプリとして、デバッガーの下ではなく、コンソールが最小化されていない: 14514ms

ご覧のとおり、Visual Studio コンソールは非常に遅く、最小化されていない "通常の" コンソールは次に遅く、最小化されたコンソールは適度に小さく、ファイルへの書き込みは非常に高速です。

コンソールの代わりにファイルへの書き込みを試みるという私のアドバイスを支持します。それ以外の場合は、スタンドアロンのコンソールの場合は、ほとんどの場合、それを最小化するようにしてください。

于 2009-02-04T17:37:07.357 に答える
4

「ゲームのパフォーマンスを損なわずにコンソールに書き込む方法はありますか?」

ほとんどのゲーム エンジン (特に Quake) が行うように、独自のゲーム内コンソールを作成し、キーが押されたときにコンソールを表示することができます。

編集:

独自のコンソールを実装したくない場合は、これを行うプロジェクトがあります。

http://www.codeplex.com/XnaConsole

これは、ゲーム内でゲームのフレームレートで実行され、コンソールと xna アプリを切り替えるときにデバイスが失われないため、Win32 コンソールよりも優れています。(XNA ではデバイスの回復は自動的に行われますが、デバイスの紛失は依然として内部で発生します)

于 2009-02-04T17:35:26.300 に答える
3

コンソールに書き込んでいるデータが多すぎる可能性があります。カウンターまたはタイマーを使用して、コンソール書き込みの頻度を減らします。通常、必要なものを確認するには、1 秒に 1 回の更新で十分です。

于 2009-02-04T20:56:30.480 に答える
2

これが古い投稿であることは承知していますが、同様の質問がある方には、より良い方法があります。本当に使いやすいコンソール タイプのライブラリがもう 1 つあります (xna コンソール プロジェクトよりもはるかに簡単です)。これは XNA Debug Terminal と呼ばれ、http://www.protohacks.net/xna_debug_terminal
で見つけることができます。 これにより、ターミナルのようなコマンド ウィンドウがゲームの上に置かれ、任意の変数の値を表示/設定したり、任意の変数を呼び出したりすることができます。メソッド、または値の変化をリアルタイムで監視することさえできます。これは完全にオープン ソースであり、XNA 3.0 および XNA 3.1 で動作します。これにより、ゲームの実行中にいつでもスプライト座標 (またはその他のもの) を簡単に確認できます。

于 2010-09-04T21:58:56.360 に答える
0

簡単に、次のことができます。

eg というクラスを作成Traceし、draw メソッドで、SpriteBatch.DrawString(...)これを使用して画面に必要な情報を描画すると、コンソールよりも優れていると思います..

これが役に立てば幸いです。

平和。

于 2012-02-13T13:17:24.723 に答える