2012-09-16 104 views
0

我試圖基本上讓一個系統,它允許我加載多種類型的敵人。一種類型的敵人比其他類型需要更多的元素。舉個例子。XML XNA如何忽略一個元素

XDocument doc = XDocument.Load("Levels\\Level"+ levelIndex + "\\Waves" + levelIndex + ".xml"); 

List<WaveInfo> waveInfo = new List<WaveInfo>(); 


     waveInfo = (from wave in doc.Descendants("wave") 
          select new WaveInfo() 
          { 
          enemiesInfo = (from i in wave.Descendants("enemy") 
            select new EnemyInfo() 
            { 
             type = Convert.ToInt32(i.Element("type").Value), 
             colour = Convert.ToInt32(i.Element("colour").Value), 
             speed = (float)Convert.ToDouble(i.Element("speed").Value), 
             spawnTime = (float)Convert.ToDouble(i.Element("spawnTime").Value), 
            }).ToList() 
          }).ToList(); 

這工作得很好,並且可以在加載兩種類型的敵人,但在我的xml我有一個色彩元素添加到敵人類型,不需要它。我想要發生的是,對於一種類型的敵人,我可以不用寫顏色標籤,而且序列化程序只是將它作爲空值處理。我怎樣才能做到這一點?

回答

1

這應該工作:

colour = i.Element("colour") != null ? 
     Convert.ToInt32(i.Element("colour").Value) : 0, 

或者更好,但你可以使用一個explicit operator,像this one,就像這樣:

colour = (int?)i.Element("colour") ?? 0,