C# Unity3D,Android Apk在Application.persistantDatapath中看不到文件

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要

如何在unity中保存类数据

我有一个应用程序,它使用一些保存和加载文件,并且它们是序列化的。我在unity c#脚本中将路径设置为
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..
}