【问题标题】:How access to persistentDataPath child folders on IOS (Unity Deployment)?如何访问 IOS(Unity 部署)上的 persistentDataPath 子文件夹?
【发布时间】:2015-05-13 23:36:29
【问题描述】:

我为 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 的结构,不创建该结构中包含的文件夹和文件。这似乎很奇怪,所以我问这个问题,因为我没有更多的想法来解决这个问题。

抱歉我的英语不好,感谢您的宝贵时间。

【问题讨论】:

  • 一个路径存在,另一个不存在。为什么这是个问题?如果.../Config/config.ini 是您创建的文件,您将不得不创建它。

标签: c# unity3d


【解决方案1】:

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);
}

顺便说一句:如果您调用 Directory.Exists () 传递文件名,它将返回 false,因为该文件不是目录。

【讨论】:

  • 我试过了,但是好像不行-_-。我稍后再试。
  • Directory.CreateDirectory 如果文件夹已经存在,则不执行任何操作,因此您不需要先这样做。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-06
  • 1970-01-01
  • 2012-02-29
  • 2021-08-02
相关资源
最近更新 更多