【问题标题】:PersistentDataPath file is not working on device but fine in unity 3dPersistentDataPath 文件在设备上不起作用,但在统一 3d 中很好
【发布时间】:2022-05-10 04:01:25
【问题描述】:
xml.Load(Application.persistentDataPath+"/PlayerData.xml");
    XmlNode root = xml.FirstChild;
    root = xml.LastChild;
    if(root.InnerText == "")

    {   
        lnoInstance.EnlistAllLevels();
        foreach(LevelNamesStatus lno in LevelLoadingArray )

        {
            XmlNode child =  CreateNode(xml,lno.Lname,lno.winStatus,lno.playingStatus);
            root.AppendChild(child);
        }
    }
   else
    {
        if(LevelLoadingArray.Count!=0 &&  LevelLoadingArray.Count<=13)
        {   LevelNamesStatus[] array = CtrlLLoadingA.LevelLoadingArray.ToArray();
            foreach(LevelNamesStatus n in array)
            {
              // Debug.Log(n.Lname+n.playingStatus);
            }
            foreach(XmlNode xmn in root)
            {  
                xmn.ChildNodes[0].InnerText = LevelLoadingArray[f].Lname;
                xmn.ChildNodes[1].InnerText = LevelLoadingArray[f].winStatus.ToString();
                xmn.ChildNodes[2].InnerText = LevelLoadingArray[f].playingStatus.ToString();
                f++;
            }

        }
        if( LevelLoadingArray.Count==0)
        {      
            RefillArray(root);
        }
    }
        xml.Save(Application.persistentDataPath+"/PlayerData.xml");

无法在 persistentDataPath 获取 xml 文件。它在 unity 3d 上运行良好,但设备或模拟器无法获取该 xml 文件。 StorageExceptError 正在设备上运行时保留

【问题讨论】:

  • 您是否在尝试读取文件之前保存文件?

标签: c# unity3d


【解决方案1】:

始终建议不要在任何地方使用硬编码的“/”或“\”字符。请尝试使用Path.DirectorySeparatorChar(参见Unity docs)。

在这种情况下应该是:

xml.Load(Application.persistentDataPath + Path.DirectorySeparatorChar + "PlayerData.xml");

那么您可以确定在所有类型的设备或平台上,至少路径都是正确的。

【讨论】:

  • 更好的方法是使用 Path.Combine(string, string)
【解决方案2】:

Application.persistentDataPath 有两个基于您的写入权限设置的路径,您可以在 Build Setting > Player Setting > Other Settings 中找到它,默认情况下,它是 internal Only。表示路径应该指向 /data/data/com.your.appid/files 仅用于开发,用户在没有 root android 设备的情况下无法找到此文件。

如果您将写入权限设置为外部(SD 卡)或在 AndroidManifest.xml 中添加 WRITE_EXTERNAL_STORAGE 权限,Application.persistentDataPath 将指向您的 sd 卡的 Android/file/com.your.appid/files。

我有同样的问题,这解决了它!

http://answers.unity3d.com/questions/203852/how-to-access-persistent-data-path-in-android-phon.html

【讨论】:

    猜你喜欢
    • 2015-07-15
    • 2012-06-14
    • 2011-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多