3

テキスト ファイルからマップを読み込むゲームを構築しています。

マップを処理するパーツを作成するときは、テキスト ファイルをコンテンツ フォルダーに保持し、その Windows ファイル パスを使用して取得しました。ファイルパスがまったく同じである必要があるため、これは適切な展開 (または別のドライブからのゲームの実行) では機能しません。

Texture2D と同じ方法でテキスト ファイルをインクルードする方法を探しましたが、それを使用できるクラスが見つかりません。他の質問に対するいくつかの回答は、コンテンツ フォルダーのテキスト ファイルを使用することを提案しましたか? どうすればいいですか?私のプログラムの名前は IslandQuest (プレースホルダー。島は含まれていません) ですが、XNA Studio によって生成された IslandQuestContent フォルダーにテキスト ファイルを配置しますか? ファイルパスがコンピューターのドライブ構成に依存しないように、そこからどのようにアクセスしますか?

助けてくれてありがとう。

4

3 に答える 3

3

これは最善の方法ではないかもしれませんが、大学 1 年生で XNA を使用して行ったことを振り返ってみると、

txt ファイルをコンテンツ フォルダーに追加しました。次に、ファイルのプロパティ (ソリューション エクスプローラーで選択し、プロパティ ウィンドウを表示) に "出力ディレクトリにコピー" があるはずです。新しい場合は、これがコピーであることを確認してください。

次に、その単なるケース

string.Format("Content/{0}.txt", filename)

これはおそらく次の方法で改善できると思いますが、テストされていません

Path.Combine(Content,filename +".txt");
于 2013-07-09T22:58:21.370 に答える
0

私の場合、メイン プロジェクトのデータ フォルダーから XML ファイル ファイルを読み取っていました。

したがって、ソリューション探索の私のプロジェクトの下で、次のように設定しました。

WindowsPhoneGame1
  ...
  data/
    content.xml
  Game1.cs
  Program.cs
  etc...

content.xml のプロパティは Build Action: Contentおよび Copy to Output Directory: Copy alwaysでした。

ドキュメントによると、ファイルを読み取るクラスでTitleContainer.OpenStream Methodを使用しました。

デフォルトのタイトル保存場所にある既存のファイルにストリームを返します。.... 返されるストリームは読み取り専用です。読み取るファイルは既に存在している必要があります。そうでない場合、このメソッドは失敗します。

私のコード例

//open stream
Stream stream = TitleContainer.OpenStream("data/content.xml");
//do something with it...
于 2013-10-27T15:42:46.967 に答える