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 回答