C# Unity3D,Android Apk在Application.persistantDatapath中看不到文件
如何在unity中保存类数据 我有一个应用程序,它使用一些保存和加载文件,并且它们是序列化的。我在unity c#脚本中将路径设置为C# Unity3D,Android Apk在Application.persistantDatapath中看不到文件,c#,android,unity3d,save,C#,Android,Unity3d,Save,如何在unity中保存类数据 我有一个应用程序,它使用一些保存和加载文件,并且它们是序列化的。我在unity c#脚本中将路径设置为Application.persistandDataPath,以保存并加载一些数据。这适用于unity editör,但不适用于android设备 我还将“ProjectSettings->Other Settings->Write Permission”从内部更改为外部SD卡。但一切都没有改变 我的应用程序未在android中保存或加载数据。甚至,android要
Application.persistandDataPath
,以保存并加载一些数据。这适用于unity editör,但不适用于android设备
我还将“ProjectSettings->Other Settings->Write Permission”从内部更改为外部SD卡。但一切都没有改变
我的应用程序未在android中保存或加载数据。甚至,android要求我在设备上写入数据,但没有任何改变
有人有同样的问题吗?我需要帮助,因为我的项目还没完成。或者有没有更好的方法来保存加密的文件或类并在android设备上运行?(我不知道这可能像使用json文件,但它是加密的等)
注意:当我在Windows中打开Application.persistandDataPath的文件夹时,我看到文件已成功创建,并且我看到存在somedata.dat文件
项目代码示例:
保存方法:
加载方法:
GameFile数据类示例
编辑:有人建议使用“Path.Combine(Application.persistentDataPath,“GameFile.dat”);”而不是我的代码。
我应用了它。现在,如果我玩游戏,在android设备上按下中间按钮暂时关闭它,然后打开游戏,它就可以工作了。但正如我之前所说的,它暂时起作用。因为如果我完全关闭游戏,将其从RAM中移除(通过按下左键并在android设备中创建应用程序),游戏将无法再次运行,也无法记住我保存的数据。我想我们正在取得进展,但仍然无法找到解决办法。另外,我在“项目设置->其他设置->写入权限”中尝试了此解决方案,在内部或外部SD卡中尝试了此解决方案,但未发生任何更改。请显示相关代码,告诉我们您使用的Unity版本以及任何其他相关信息。谢谢,我加了一个样本你有日志吗?在Android上运行时是否有任何错误?编辑:我刚刚注意到你在那里抑制了异常,所以你看不到任何东西。是否可以记录异常并将日志附加到这里?请不要记录日志。那么,
filedata
是否可能为空?
public void Save()
{
FileStream file = null;
string path = Application.persistentDataPath + "/" + "GameFile.dat";
try
{
BinaryFormatter bf = new BinaryFormatter();
file = File.Create(path);
if (fileData != null)
{
fileData.SetHighscore(highScore);
fileData.SetIsGameStartedFirstTime(isGameStartedFirstTime);
fileData.IsMusicOn(isMusicOn);
bf.Serialize(file, fileData);
}
}
catch (Exception e)
{
}
finally
{
if (file != null)
{
file.Close();
}
}
}
public void Load()
{
FileStream file = null;
string path = Application.persistentDataPath + "/" + "GameFile.dat";
try
{
BinaryFormatter bf = new BinaryFormatter();
file = File.Open(path, FileMode.Open);
fileData= (GameFile)bf.Deserialize(file);
}
catch (Exception e)
{
}
finally
{
if (file != null)
{
file.Close();
}
}
}
class GameFile
{
private bool isGameStartedFirstTime;
private int highScore;
private bool isMusicOn;
// Also setters and getters here..
}