【问题标题】:Unity - File not writing on Android?Unity - 文件不在Android上写入?
【发布时间】:2015-07-31 16:42:16
【问题描述】:

在过去的几个小时里,我一直在努力让它工作,这让我发疯了。

我设置了一种保存数据的方法,该方法在 PC 上完美运行,但是在 Android 上它不会写入文件。这是我的代码:

 public void Save()
{
    string data = buildJson();

    File.WriteAllText(Application.persistentDataPath + "/playerSave.json", data);
    Debug.Log("File Saved: " + Application.persistentDataPath + "/playerSave.json");
}

不知道为什么它不起作用。据我所知,阅读其他线程,使用 Application.persistantDataPath 是正确的做法。

有什么帮助吗?

【问题讨论】:

    标签: android unity3d save


    【解决方案1】:

    在 android File.WriteAllText(Application.persistentDataPath + "/playerSave.json", data) 将数据写入你的sd卡你需要添加权限android.permission.WRITE_EXTERNAL_STORAGE 在您的清单文件中。 unity创建的默认manifest文件没有添加这个权限。

    【讨论】:

    • 嘿,谢谢。我该怎么做?我已经在构建设置中将“写入权限”设置为“外部(SDCard)”。
    • 打开你的android清单文件并在应用程序标签关闭后在标签之前添加以下行
    • 假设这是“\Temp\StagingArea\AndroidManifest.xml”中的文件,该行已经存在于文件中,问题依然存在。
    • 你的unity项目中是否有多个Androidmanifest文件?
    • 在同一个文件夹下有AndroidManifest.xml和AndroidManifest-main.xml,我在-main文件中添加了权限,问题依旧。
    【解决方案2】:

    如果 WriteAllText 失败,则会抛出异常。为什么不尝试捕获异常并检查错误是什么?

    【讨论】:

    • 我一直在尝试这个,但我还没有找到读取这些日志的方法,如果有任何输出的话。我还放入了一个 Debug.Log 只是为了测试,但我也没有看到它被输出。我试过 DDMS 和 logcat。
    【解决方案3】:

    解决了。

    我的问题是该方法甚至没有被正确调用。

    我创建了一个单例游戏对象,其中保存了包含我的保存方法的脚本,但我没有使用引用来保存它,这意味着它仅在我在同一场景中调用保存方法时才有效游戏对象已创建。 (当我在 Unity 编辑器中跳过我的菜单场景时就是这种情况,但当我在应用程序中对其进行真实测试时不是这种情况)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-10
      • 1970-01-01
      相关资源
      最近更新 更多