2017-04-13 48 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

否我試過了,它不起作用。 –