Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 团结。安卓更新应用程序后,“保存文件”将消失_Android_Unity3d_Save - Fatal编程技术网

Android 团结。安卓更新应用程序后,“保存文件”将消失

Android 团结。安卓更新应用程序后,“保存文件”将消失,android,unity3d,save,Android,Unity3d,Save,我正在Unity中创建一个非常简单的游戏,并希望节省结果、时间等。 我使用System.IO,一切正常,但当我从“.apk”更新我的应用程序时,所有结果都消失了 那个么,我如何才能创建一个在更新后不会被删除的文件呢 public static void Save() { string[] lines = new string[] { Language, First_Test.ToString(), Last_Test.ToString(),

我正在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

如果您不想使用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 "";
}
公共静态字符串getAndroidTernalFilesDir()
{
字符串[]潜在目录=新字符串[]
{
“/mnt/sdcard”,
“/sdcard”,
“/storage/sdcard0”,
“/storage/sdcard1”
};
if(Application.platform==RuntimePlatform.Android)
{
对于(int i=0;i

希望这有所帮助,

三星和许多其他安卓设备使用序列号作为外部SD卡的挂载点。基于@Kardux对内部存储的(原始)回答,以下内容将支持外部存储(没有特定目录),然后搜索内部SD卡作为备用

public static string GetAndroidInternalFilesDir()
{
    string[] potentialDirectories = new string[]
    {
        "/storage",
        "/sdcard",
        "/storage/emulated/0",
        "/mnt/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 "";
}
公共静态字符串getAndroidTernalFilesDir()
{
字符串[]潜在目录=新字符串[]
{
“/存储”,
“/sdcard”,
“/storage/emulated/0”,
“/mnt/sdcard”,
“/storage/sdcard0”,
“/storage/sdcard1”
};
if(Application.platform==RuntimePlatform.Android)
{
对于(int i=0;i

注意:这假定外部存储目录首先出现在目录列表中。然后,它根据成功的可能性对访问存储的尝试进行优先级排序,并添加
/storage/simulated/0
,这是许多设备在无法访问
/sdcard

时可以访问的。您不想使用playerRefs有什么特殊原因吗?我需要保存数字数组,我知道,PlayerPerfs不可能。您可以发布用于保存文件的代码吗?如果我是你,我会考虑使用JSON和PravePrIFS。这是一个免费且非常酷的json类,您可以在unity中使用。基本思想是创建一个json对象,将所有数据添加到其中,然后将该对象保存为Player Prefs中的单个字符串。然后,要读取保存的数据,您只需从PlayerPrefs抓取字符串并将其转换回JSONObject。问题是,我创建了一个包含保存、加载、修复等功能的preety大型类,找到一个不切换到JSON的解决方案将节省我很多时间。但是谢谢你的建议,我会仔细检查的。请原谅我的无知,我无法让脚本工作,有什么指导吗?@SamuelDiaz这是一个可以添加到现有脚本并从现有脚本调用的函数。