我在XNA 3中構建了一個遊戲,並且我有以XML格式存儲的級別。你會推薦什麼解決方案將這些XML文件反序列化爲級別對象?它需要能夠在Xbox上工作。XML XNA對象反序列化
1
A
回答
1
我不會推薦(德)序列化的實際水平,只是創建一個簡單的容器類,其中包含的信息,從中構建一個級別的對象。
類似:
[Serializable()]
public class LevelDefinition
{
public Vector3 PlayerStartPosition { get; set; }
public string LevelName { get; set; }
public List<Enemy> Enemies { get; set; }
... etc
}
這將導致好的,乾淨的XML。
然後只使用XmlSerializer
類來反序列化它。
2
我還沒有嘗試過360(我敢打賭它會工作),但XmlSerializer是一種非常簡單的方法來將您的對象圖保存/加載到XML中。基本上,你把你的XML文件,並運行xsd.exe反對它。這將生成一組C#類,您可以將您的XML反序列化。在你的代碼中,你會寫如下:
var serializer = new XmlSerializer(typeof(LevelType));
var level = (LevelType)serializer.Deserialize(streamToYourLevel);
全部完成。
+0
這可以工作。當我有機會時,我會嘗試。謝謝! – RCIX 2009-06-11 21:21:54
1
我不認爲二進制序列化可用於Zune和XBox,但XmlSerializer適用於我。我沒有序列化集合的問題,但是你必須使用XmlArrayItem屬性來處理像ArrayList這樣的非類型化集合,或者將附加類型信息傳遞給XmlSerializer構造函數,但是現在使用List更好更簡單。字典不能被序列化,但你可以爲它創建一個包裝類。我通常爲每個項目存儲一個唯一的ID,然後將其用作字典中的鍵。 然後,我可以創建一個包裝字典但暴露爲項目集合的類。
public class MyItem {
public string ID { get; set; }
:
}
public class MyList : ICollection<MyItem> {
private Dictionary<string,MyItem> items;
public MyList() {
items = new Dictionary<string, MyItem>();
}
void Add(MyItem item) {
items.Add(item.ID, item);
}
:
}
相關問題
- 1. XML反對反序列化
- 2. 反序列化XML數據對象
- 3. 繼承對象的XML反序列化
- 4. C#將XML反序列化爲對象
- 5. 反序列化鍵/值XML到對象
- 6. 反序列化XML到對象在C#
- 7. 反序列化XML數組對象
- 8. C#Xml反序列化嵌套對象
- 9. 無法反序列化XML對象
- 10. 反序列化XML到C#對象
- 11. 將XML反序列化爲C#對象
- 12. 贏RT反序列化的XML對象
- 13. 如何反序列化XML到對象
- 14. 部分反序列化XML到對象
- 15. Linq到XML - 反序列化到對象
- 16. 將xml反序列化爲對象
- 17. XML反序列化給空WCF對象
- 18. C#反序列化XML到對象
- 19. 反序列化XML響應爲對象
- 20. 將XML反序列化爲C#對象
- 21. 反序列化XML到從webapi對象
- 22. 反序列化XML的複雜對象
- 23. 反序列化xml到對象
- 24. 反序列化XML以反對在C列表中的對象#
- 25. 反序列化到對象
- 26. 反序列化到對象
- 27. 問題從XML文件序列化/反序列化對象/
- 28. C#反序列化對象
- 29. 反序列化序列化對象
- 30. XNA XML序列化問題
我正在那個。好主意! – RCIX 2009-06-11 23:47:56