如何在 Unity 中从 sdcard 中 write/read 一个 txt 文件?

How to write/read a txt file from sdcard in Unity?

我是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 ();
}

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

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

PlayerPrefs.SetInt("Player Score", 10);

更新:Application.persistentDataPath属性如果要存一些数据到SD卡,这样最安全

PlayerPrefs 可能是保存高分的更好选择,但如果您希望保存到文件,那么您可能希望在调试应用程序时使用 Logcat,因为它可能会准确地喷出有用的错误为什么它无法 access/write 到您的位置。

一些提示:

  • 您需要确保您的应用程序具有写入外部权限。没有它,Android不会让你写入SD卡。

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

  • 访问路径时,在处理 Android.

  • 时需要 file:// uri