如何访问IOS上的persistentDataPath子文件夹(Unity部署)?

时间:2015-05-13 14:52:39

标签: c# unity3d

我为iOS开发了一个应用程序(精确到Ipad),我需要在Ipad上保存配置文件以节省用户进度。 Unity的文档说使用Application.persistentDataPath在Ipad上的配置文件上进行更新。所以,我使用它并且它可以在Unity编辑器上运行,但是当我在Xcode上部署应用程序时,我在执行时遇到了这个错误:

无法加载文件:“/ var / mobile / Containers / Data / Application /.../ Documents / Config / config.ini”

我在Windows上工作,所以我的Application.persistentDataPath是:“C:\ Users \ stagiaire \ AppData \ LocalLow \ CompName \ ProjectName”

根据这个结构,我有“Config / config.ini”,所以我希望这个配置在iOS上是相同的。

但是当我检查这些文件夹和/或文件是否存在时:

if (Directory.Exists(UnityEngine.Application.persistentDataPath + "/Config/config.ini"))

XCode说这个文件不存在,但是当我做这个测试时:

if (Directory.Exists(UnityEngine.Application.persistentDataPath + "/"))

XCode说这个文件夹存在??????

所以,我不明白。 Unity创建persistentDataPath的结构,不创建此结构中包含的文件夹和文件。这看起来很奇怪,所以我问这个问题,因为我没有更多的想法来解决这个问题。

抱歉我的英语很差,谢谢你的时间。

1 个答案:

答案 0 :(得分:3)

Unity不会创建目录结构,而是允许您从应用程序的沙箱访问 Documents 文件夹。这意味着你必须在第一次访问它们时创建一次目录和文件。

string dir = Application.persistentDataPath + "/Config";
if (!Directory.Exists (dir)) {
    Directory.CreateDirectory (dir);
}
string configFile = dir + "/config.ini";
if (!File.Exists (configFile)) {
    File.Create (qcarFile);
}

BTW:如果你调用 Directory.Exists()传递文件名,它将返回false,因为该文件不是目录。