unity PC和android不同平台读取xml文件比较

本文都是加载本地xml文件

一:pc平台下

1:不管是persistentDataPath路径还是streamingAssetsPath都可以直接使用load获取读写到

        eg:  XmlDocument doc = new XmlDocument(); doc.Load(path);

2:有一点要注意的是,如果你自己在assets文件夹下面自己新建了一个文件夹存放xml文件,那么在打包的时候这个文件夹下的xml在打包之后是读取不到的 

解决办法:1:是直接把xml文件放在StreamAssets文件夹下面

                    2:在打包之后,把存放的xml文件夹放到你的****_Data文件夹下(确保路径统一,如果你的xml文件夹不是直接位于          Assets文件夹下面,例如:Aeeets/Xml/name.xml,那么你在打包之后在****_Data文件夹下面新建个文件夹Xml,最后里面放入name.xml即可)             

3:用www类去加载,

     用www去加载xml文件,都需要添加“file://

     eg.:  

  IEnumerator IEPCRead(string path)
      {
          WWW www = new WWW("file://" + path);
          //do.......   
      }

二:Android平台下

1:不能直接load streamingAssetsPath 路径下面的xml,可以load  persistentDataPata路径下的xml

     eg.:

  string path1 = Application.streamingAssetsPath + "/stream.xml";
  XmlDocument doc = new XmlDocument();
  doc.Load(path1);   //错误
   string path1 = Application.persistentDataPath + "/stream.xml";
  XmlDocument doc = new XmlDocument();
  doc.Load(path1);// 正确

2:不能读取自己创建的文件夹下面xml

         这个和pc平台下面的第2条是一样的,但是对打包后apk我们无法操作,所以在android平台下面还是不要自己创建文件夹存放xml文件。

3:用www去加载

         用www去加载xml文件,添加“jar:file://协议

  IEnumerator IEAndroidRead(string path)
         {
            WWW www = new WWW("jar:file://" + path);
           //do.......
         }

【修改】

   ps:这里我在试的时候发现streamingAssetsPath不加“jar:file://协议(加了会出错)

  date:2017.11.1

  加个例子

三:总结

     pc:可以直接load相应路径下的xml文件,但是要注意自己创建文件夹在打包后读取会出错

          用www去加载的时候要加"file://"协议

     android:只能loadpersistentDataPata路径下的xml文件,其他均不可,

                         用www加载的时候需要添加“jar:file://”协议,但是streamingAssetsPath不能加“jar:file://”协议

猜你喜欢

转载自blog.csdn.net/K20132014/article/details/75224777