我必须在iOS设备上本地保存一些数据用于Unity游戏。 Unity提供
Application.persistentDataPath
获取公共目录以保存数据。并在控制台上打印它显示这个返回iOS的路径是正确的,即/ Users / userName / Library / Developer / CoreSimulator / Devices / ******** - **** - **** - *** * - ************ /数据/集装箱/数据/应用/ ************ - ******** - *** ********* /文档/
因此,一个函数返回路径,另一个函数检查目录是否存在,如果不存在,则应创建一个目录,但它创建的FILE没有任何扩展名。这是我的代码
void savePose(Pose pose){
if (!Directory.Exists(PoseManager.poseDirectoryPath())){
Directory.CreateDirectory(PoseManager.poseDirectoryPath());
//Above line creates a file
//by the name of "SavedPoses" without any extension
}
// rest of the code goes here
}
static string poseDirectoryPath() {
return Path.Combine(Application.persistentDataPath,"SavedPoses");
}
答案 0 :(得分:1)
可能的诽谤:
1 。Path.Combine(Application.persistentDataPath,"SavedPoses");
在savedPoses
之前添加反斜杠,而其他是正斜杠。也许这会导致iOS出现问题。在没有Path.Combine
函数的情况下尝试连接原始字符串。
static string poseDirectoryPath() {
return Application.persistentDataPath + "/" + "SavedPoses";
}
2 。如果Directory
类无效,请使用DirectoryInfo
类。
private void savePose(Pose pose)
{
DirectoryInfo posePath = new DirectoryInfo(PoseManager.poseDirectoryPath());
if (!posePath.Exists)
{
posePath.Create();
Debug.Log("Directory created!");
}
}
static string poseDirectoryPath()
{
return Path.Combine(Application.persistentDataPath, "SavedPoses");
}
修改强>:
可能是iOS上的权限问题。
您可以在StreamingAssets
目录中创建该文件夹。您有权读取和写入此目录。
访问此权限的一般方法是使用Application.streamingAssetsPath/
。
在iOS上,也可以使用Application.dataPath + "/Raw"
访问它。
在Android上,也可以使用"jar:file://" + Application.dataPath + "!/assets/";
访问它,使用Application.dataPath + "/StreamingAssets";
访问Windows和Mac。只需使用适合你的那个。
对于您的问题,Application.dataPath + "/Raw"+"/SavedPoses";
应该这样做。