Android 团结。安卓更新应用程序后,“保存文件”将消失
我正在Unity中创建一个非常简单的游戏,并希望节省结果、时间等。 我使用System.IO,一切正常,但当我从“.apk”更新我的应用程序时,所有结果都消失了 那个么,我如何才能创建一个在更新后不会被删除的文件呢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(),
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这是一个可以添加到现有脚本并从现有脚本调用的函数。