如何在Unity中从SD卡写/读一个txt文件?

时间:2015-04-23 08:02:19

标签: c# android file unity3d read-write

我是Unity的新手。我有这样的问题。

我的游戏得分很高,我希望将其保存到移动设备上的文本文件中。在这种情况下,我想将该文本文件保存到我的SD卡,但我不知道如何。

下面的代码显示了它对文件的读写方式。它在我的计算机上运行得很好,但它不适用于模拟器或真正的移动设备。

我认为它对目录感到困惑。

void writeHighScore() {
    string path = "\\sdcard\\colorbounce\\highscore.txt";
    int highscore = 0;
    // This text is added only once to the file. 

    if (!File.Exists(path)) 
    {
        System.IO.Directory.CreateDirectory("\\sdcard\\colorbounce\\");
        // Create a file to write to. 
        using (StreamWriter sw = File.CreateText(path)) 
        {
            sw.WriteLine(score);
        }   
    }
    // Open the file to read from. 
    using (StreamReader sr = File.OpenText(path)) 
    {
        string s = "";
        while ((s = sr.ReadLine()) != null) 
        {
            highscore = int.Parse(s);
        }
    }
    if (score > highscore) {
        // This text is always added, making the file longer over time 
        // if it is not deleted. 
        using (StreamWriter sw = File.AppendText(path)) 
        {
            sw.WriteLine(highscore);
        }
    }
    highScoreText.text = highscore.ToString ();
}

请帮我解决这个问题。 感谢。

2 个答案:

答案 0 :(得分:1)

考虑使用PlayerPrefs来保存您的高分,例如:

void createToolbox(const char* windowName, HINSTANCE hInstance) {
    // ...

    // Do we need this?
    // HINSTANCE hInstance = GetModuleHandle(NULL);

    CreateWindow(windowClass, windowName,
        WS_OVERLAPPEDWINDOW,
        0, 0, 640, 480,
        0, 0, hInstance, NULL);

    // ...
}

更新:如果你想将一些数据保存到SD卡,请使用Application.persistentDataPath属性,这是最安全的。

答案 1 :(得分:1)

PlayerPrefs可能是保存高分的更好选择,但是如果您希望保存到文件,那么您可能希望在调试应用程序时使用Logcat,因为它可能会发出有关其无法访问的确切原因的有用错误/写信给你的位置。

一些提示:

  • 您需要确保您的应用程序具有“写入外部”权限。没有它,Android将不允许您写入SD卡。

  • 您需要确保您的设备中确实有SD卡。您可能需要检查模拟器以确保它是您的模拟器支持的功能。

  • 访问路径时,您需要处理Android时的文件:// uri。