2017-04-13 51 views
0

所以这里是我的代码,它在Unity编辑器中工作得很好,但在android上没有,它只读取xml文件的第一行。 我不知道它有什么问题。 该文件存在于手机上,但只读取第一行。 在统一编辑器中,它工作得很好。 感谢您的帮助。我该如何阅读Android上的XML与统一?

using System.Xml; 
using System.Xml.Serialization; 

public class Mission 
{ [XmlAttribute("id")] 
public int Id; 

public string description; 
public int ordre; 

} 

这里是自动加载XML

using System.IO; 
using System.Xml.Serialization; 
using System.Collections.Generic; 

[XmlRoot("Missionss")] 
public class Missions{ 
[XmlArray("Missions"), XmlArrayItem("Mission")] 
public List<Mission> Mission_List; 

private Missions(){} 

public static Missions LoadFromFile(string filepath){ 
    XmlSerializer serializer = new XmlSerializer(typeof(Missions)); 
    using(FileStream stream = new FileStream(filepath, FileMode.Open)) 
    { 
     return serializer.Deserialize(stream) as Missions; 
    } 
} 
public void Save (string path) 
{ 
    XmlSerializer serializer = new XmlSerializer (typeof(Missions)); 
    using (FileStream stream = new FileStream (path, FileMode.Create)) { 
     serializer.Serialize (stream, this); 
    } 
    } 
    } 

终于类:

public void LoadXML(){ 

    string filename="/phases.xml"; 
    string filename1="/missions.xml"; 

    phases = Phases.LoadFromFile(Application.persistentDataPath + filename); 
    missions = Missions.LoadFromFile (Application.persistentDataPath + filename1); 


} 

public void save(){ 

    phases.Save(Application.streamingAssetsPath + "phases.xml"); 
    missions.Save(Application.streamingAssetsPath + "missions.xml"); 


} 
+0

是否打算保存在streamingAssetsPath上,但从持久性加载? –

+0

是的,我使用来自streamingAssets的WWW类下载它,并且将它写入持久化中,然后再从持久化中加载它。这是我发现使其工作的唯一方法,但它只读取我的第二个xml的第一行(我有两个xml文件)。 –

+0

我知道,这有点蹩脚,但如果你的xml不是很大,你可以安全地将它存储在PlayerPrefs中,并且它对于不同的平台是安全的。 –

回答

0

不要你需要 “\” 写的什么地方?让我们说:phases.Save(Application.streamingAssetsPath +“\\”+“phases.xml”);

+0

否我试过了,它不起作用。 –