android - 统一。安卓。更新应用程序后保存文件消失

标签 android unity3d save

我正在 Unity 中创建非常简单的游戏,并希望保存结果、时间等。 我为此使用 System.IO,一切正常,但当我从“.apk”更新我的应用程序时,所有结果都消失了。

那么如何创建更新后不会被删除的文件呢?

public static void Save()
{
    string[] lines = new string[] {
        Language,
        First_Test.ToString(),
        Last_Test.ToString(),
        MakeLine(ref Attention_Results),
        MakeLine(ref Memory_Results),
        MakeLine(ref Reaction_Results),
        Attention_Best.ToString(),
        Memory_Best.ToString(),
        Reaction_Best.ToString(),
        LastSend.ToString(),
        UserName,
        FlyTime.ToString() };

    File.WriteAllLines(Application.persistentDataPath+ @"/Progres.save", lines);
}

最佳答案

编辑:根据您的需要,您可能想要更改潜在目录的顺序,甚至支持外部存储。如果是这样,请查看@LoungeKatt answer .

如果您不想使用 PlayerPrefs(我认为这是最强大的可用解决方案),您始终可以直接写入用户设备。

警告:请记住,这样做远非完美的解决方案!用户可以删除和编辑您保存的文件,这更像是一种解决方法,而不是真正的答案。

无论如何,由于内部文件目录路径从一个 Android 设备更改为另一个,您可以使用一个小脚本来找到它:

public static string GetAndroidInternalFilesDir()
{
    string[] potentialDirectories = new string[]
    {
        "/mnt/sdcard",
        "/sdcard",
        "/storage/sdcard0",
        "/storage/sdcard1"
    };

    if(Application.platform == RuntimePlatform.Android)
    {
        for(int i = 0; i < potentialDirectories.Length; i++)
        {
            if(Directory.Exists(potentialDirectories[i]))
            {
                return potentialDirectories[i];
            }
        }
    }
    return "";
}

希望这对您有所帮助,

关于android - 统一。安卓。更新应用程序后保存文件消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39983451/

相关文章:

unity3d - Unity Mirror - NetworkServer向目标客户端发送消息

c# - 我的 FPS 计数器不准确,为什么?

Android:保存到 SD 卡总是在重新安装时删除

r - 试图将 R 环境中的所有内容保存到磁盘

javascript - 如何将 svg Canvas 保存到本地文件系统

java - 尝试打开/assets 中的 sqlite 文件时收到 "Could not open database"错误

c# - 平滑 Lerp 运动?

android - registerReceiver 应用内计费消息的问题?

android - ExoPlayer 无法从文件中播放

android - 无法让应用程序找到 android.support.v7,找不到 appcompat_v7 项目