0

私はC#とXNA 4.0を使用してゲームを開発していますが、プロジェクトのスタートアップの種類はコンソールアプリケーションです(高度な要素のデバッグに役立ちます)。

私の質問には2つの部分があります:

  1. ゲームコード内からコンソールウィンドウを完全に非表示/無効にすることは可能ですか?
  2. そうでない場合、外部アプリケーション(ゲームランチャー)から起動タイプを変更することは可能ですか?

明らかな解決策は、パブリックリリースのスタートアップタイプを「Windowsアプリケーション」に設定し、デバッグバージョンと開発者バージョンのコンソールとして保持することですが、ユーザーがデバッグデータのコンソールをオンにできるようにしたいと思います。彼らが問題を抱えている場合。

4

3 に答える 3

0

私にはX/Y問題のように聞こえますが、ここでの要件と問題へのアプローチを再検討します。ユーザーが問題を抱えている場合は、コマンドプロンプトを確認することを本当に期待していますか。

これらすべてを処理するデバッグクラスを作成し、それをメインのゲームループに追加して、必要に応じて画面に描画できるようにすることを検討します。

于 2013-03-25T09:40:37.093 に答える
0

実際に必要なのは、log4netnlogのようなロガーです。

NugetVisualStudio拡張機能を使用して簡単にインストールできます。

次に、ベアテイルのようなビューアを介してログファイルを監視します

Console.WriteLine()での正規表現の検索と置換

于 2013-03-28T05:13:47.470 に答える
0

このスタックオーバーフローの回答は、ネイティブ呼び出しを行うことでコンソールウィンドウを開くことができることを示しているようです。

基本的に、アプリのスタートアップの種類をWindowsアプリにしてから、AllocConsoleを呼び出してコンソールをアプリケーションに登録します。これにより、stdin、stdout、stderrがプロセスからコンソールにリダイレクトされます。

私はまだ他の回答者に同意します。ある種のロギングフレームワークの方が理にかなっています。log4netのようなものを使用する場合は、デバッグの目的で両方を実行できます。log4net構成にコンソールアペンダーを含め、コマンドライン引数をアプリに渡す場合はコンソールを割り当てます。

于 2013-03-28T06:20:52.053 に答える