1

XNA でゲームを作成し、ファイルからスコアを取得するには、次のようにします...

private void GetScore()
    {
        if (File.Exists(scoreFilename))
        {
            using (StreamReader sr = new StreamReader(scoreFilename))
            {
                hiScore = Convert.ToInt16(sr.ReadLine());
            }
        }
        else
        {
            FileStream fs = File.Create(scoreFilename);
            fs.Close();
            using (StreamWriter sw = new StreamWriter(scoreFilename))
            {
                sw.Write("0");
            }
            hiScore = 0;
        }
    }

これは Windows では機能しますが、Android ではどうすればよいでしょうか?

4

2 に答える 2

0

IsolatedStorageFileを探していると思います。Windows Phone でデータを書き込むのと同じように動作するはずです。新しいコードは次のようになります。

private void GetScore()
{
    var store = IsolatedStorageFile.GetUserStoreForApplication();

    if (store.FileExists(scoreFilename))
    {
        var fs = store.OpenFile(scoreFilename, FileMode.Open);
        using (StreamReader sr = new StreamReader(fs))
        {
            hiScore = Convert.ToInt16(sr.ReadLine());
        }
    }
    else
    {        
        var fs = store.CreateFile(scoreFilename);            
        using (StreamWriter sw = new StreamWriter(fs))
        {
            sw.Write("0");
        }
        hiScore = 0;
    }
}

私はこれをテストしておらず、おそらくより少ないコードでそれを行う方法がありますが、時間がないので、コードを必要最小限だけ変更しました。それがどうなるか教えてください。

于 2013-08-25T04:38:15.137 に答える
0

次のように外部ディレクトリを使用することもできます。

コンテキストを格納するクラスを定義します。

public class App
{        
    public static Context CurentContext { get; set; }
}

メイン アクティビティで、コンテキストを初期化します。

public class Activity1 : Microsoft.Xna.Framework.AndroidGameActivity
    {
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);            

            App.CurentContext = this;

            var g = new Game1();
            SetContentView((View)g.Services.GetService(typeof(View)));
            g.Run();
        }
    }

次に、外部ディレクトリにアクセスします。

var dirPath = App.CurentContext.GetExternalFilesDir(string.Empty).AbsolutePath;
string filePath = Path.Combine(dirPath, "YourScoreFileName.txt");
using (var stream = File.OpenRead(filePath))
{

}

そして、ファイルは次のような場所に保存する必要があります。

/storage/emulated/0/Android/data/[your_package]/files/
于 2015-09-30T09:28:31.663 に答える