Skip to main content
 首页 » 编程设计

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

2024年06月20日25zdz8207

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

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

请您参考如下方法:

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,因为该文件不是目录。