0

Windows Phone 7ゲームで作業していて、レベルをテキストファイルに保存し、それを2D配列にロードしたいのですが、txtファイルのコンテンツインポーターがないため、分離ストレージマネージャーを使用しました

protected void read_lvl()
    {
        IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication();
        IsolatedStorageFileStream fileStream = myIsolatedStorage.OpenFile("myFile.txt", FileMode.Open, FileAccess.Read);
        using (StreamReader reader = new StreamReader(fileStream))
        {    //Visualize the text data in a TextBlock text

            while (!reader.EndOfStream)
            {
                //for each row
                for (int i = 0; i < rows; i++)
                {
                    //read in the line
                    string myLine = reader.ReadLine();
                    //take out the commas
                    string[] row = myLine.Split(',');

                    //convert to string to ints
                    //and feed back into array
                    int[] nRow = new int[row.Length];
                    for(int r=0; r<columns;r++){
                        nRow[r] =Convert.ToInt32(row[r]);
                        myreadArray[i, r] = nRow[r];
                    }

                }
            }

        }
    }

.txtこれは、保存されたゲームの状態などをロードするのに適していますが、複数のファイルに複数のレベルを設定したいので、代わりにこれを使用してみました。

        //stream from file
        Stream stream = TitleContainer.OpenStream("myFile.txt");
        //make a stream reader from the stream
        using (StreamReader sreader = new StreamReader(stream))

しかし、同じエラーがスローされます。このファイルタイプを処理するインポーターはありません。

何をしますか?

4

3 に答える 3

1

ファイル「myfile1.txt」の名前を変更し、属性FileMode.OpenOrCreateをまだ持っていない場合は変更するだけで、分離ストレージでこれを行うことができます。

于 2012-11-27T16:32:53.617 に答える
0

ファイルを追加し、「ビルドアクション」を「なし」に設定し、「出力ディレクトリにコピー」を「新しい場合はコピー」に設定して、を使用してロードできるはずです。

XDocument.Load(TitleContainer.OpenStream(@"path-to-file.txt"));

ここに示すように。

お役に立てれば!

于 2012-11-26T16:29:05.163 に答える
0

これが役立つかどうかはわかりませんが、これがゲームマップをゲームにロードする方法です(xとyはグリッド座標です)。

var assembly = System.Reflection.Assembly.GetExecutingAssembly();
var stream = assembly.GetManifestResourceStream("View.Maps.Breakout_" + _breakoutSelection + ".txt");

using (var streamReader = new StreamReader(stream))
{
    int y = 0;

    while (!streamReader.EndOfStream)
    {
        string data = streamReader.ReadLine();

        int x = 0;

        foreach (var mapSquare in data)
        { code here }
    }
}
于 2012-12-01T05:34:31.970 に答える