0

XNA 4.0 ゲームで(このチュートリアルを使用して) コンテンツ パイプライン拡張機能を作成しました。

いくつかの側面を変更したので、私のニーズにより適していますが、基本的な考え方は引き続き適用されます。ここで、さらに一歩進んで、実行時にゲームを変更できるようにしたいと考えています。コンテンツ パイプライン拡張機能を使用して読み込んでいるファイルは非常に単純で、10 進数しか含まれていないため、ユーザーがそのファイルを自由に変更して、ゲームの実行中に再読み込みできるようにしたいと考えています (必要に応じて再コンパイルする必要はありません)。遠い)。このファイルは、レベル エディターの非常に単純化されたバージョンです。つまり、次のような行が含まれています。

1 1,5 1,78 -3,6 

ここで、最初の数字はシーンに描画されるオブジェクトを決定し、残りの 3 つの数字はそのオブジェクトが配置される座標です。

では、これらの数値を含むファイルを変更して、ゲームがそれをロードし、それに応じてシーンを再描画するにはどうすればよいでしょうか?

ありがとう

4

2 に答える 2

1

カスタムコンテンツパイプライン拡張機能を作成したことを考えると、streamreaderを使用してデータを読み込む方法を知っていると思いますか?テキストファイルを1行ずつ読み取ることで、レベルデータを空にし、新しいデータを読み込むことができる場所はどこですか?

私がこれに言及する理由は、特にxna redistributeにコンテンツパイプラインが含まれていないため、実行時にコンテンツパイプラインを介してデータをロードできないためです。

もう1つのオプションは、レベルファイルにxmlを使用するように変更し、ごく最近見つけたXElementを使用することです。これが現在の方法です。

これは、StreamReaderを使用して.txtファイルから単純なレベルのデータをロードするコメント付きの例です。http://pastebin.com/fFXnziKv

于 2012-04-05T11:20:53.933 に答える
0

XNA 4 で StorageContainer を使用している場合は、次のようなことができます。

(...)
StorageContainer storageContainer = //get your container

Stream stream = storageContainer.OpenFile("Level.txt", FileMode.OpenOrCreate);
StreamReader sr = new StreamReader(stream);

while (!sr.EndOfStream)
{
    String line = sr.ReadLine();
    //use line to do something meaningful
}
stream.Close();
storageContainer.Dispose();
(...)

個人的な経験から言うと、未加工の TextReader を使用する場合、唯一の問題はコンテンツ フォルダーのパスを取得することです。これは比較的簡単に取得できます(Windows のみ!)。

于 2012-04-06T17:44:24.907 に答える