2012-01-13 57 views
0

這是一個我一直在努力幾天的問題。我設法創建了一個包含2個類的遊戲庫 - 其中一個包含我想要更改的變量的名稱和類型,另一個用於寫入XML文件(序列化)。 這是我的序列化類:將數據從XML文件加載到XNA 4.0中

namespace Postavke 
{ 
    public class TempMain 
    { 
     public static void Main() 
     { 
      object TestValue = new PostavkeStanice(); 
      XmlWriterSettings XMLPostavke = new XmlWriterSettings(); 
      XMLPostavke.Indent = true; 

      using (XmlWriter pisac = XmlWriter.Create("Postavke.xml", XMLPostavke)) 
      { 
       IntermediateSerializer.Serialize(pisac, TestValue, null); 
      } 
     } 
    } 
} 

,我想序列化(「PostavkeStanica」)只有一個bool變量,所以XML文件是非常非常簡單的類。 當我想從XML加載數據到我的XNA 4.0程序時,出現問題。我用的是ContentManager,但是當我嘗試使用應該有自己的價值觀通過這個設置變量,我得到的錯誤

"There was an error while deserializing intermediate XML. Cannot find type Postavke.PostavkeStanice"." 

在聲明區:

ContentManager upraviteljSadrzaja; 
PostavkeStanice radnaStanica1; 

在LoadContent方法:

radnaStanica1 = upraviteljSadrzaja.Load<PostavkeStanice>(@"Teksture/Postavke"); 

的「PostavkeStanica」類只有一個bool稱爲「Stanje」,我想用它來確定某個對象啓用或DIS變量體健,例如:

if (position == stanica1 && radnaStanica1.Stanje) 
      { 

       kontrola = false; 
      } 

這段代碼確定是否可移動物體是在radnaStancia1對象的前面(其不改變其位置),並且當contition爲真它停止運動。 我正在嘗試使用XML文件來設置此變量的值,因爲我希望能夠在不重新構建整個解決方案的情況下更改該變量的值。

請指教,謝謝。

回答

0

有時,當反序列化器無法找到類型時,它可能是因爲遊戲庫沒有被引用 - 或者 - 在編譯器嘗試理解content.load語句,遊戲庫持有它正試圖找到的類型尚未建成。

確保設置主遊戲項目的依賴關係取決於庫並參考它。當遊戲庫被設置爲依賴項時,編譯器知道首先構建它。

+0

是的,我做到了,但它仍然給我同樣的錯誤。這是讓我困惑的部分:邏輯上,我只需要一次序列化 - 創建與我的「PostavkeStanice」類相對應的XML文件,之後我甚至可以刪除它。我通過將我的遊戲庫的輸出類型選擇到控制檯應用程序,並通過Debug-> Start new instance創建了XML文件。現在我有需要的XML文件 - 是否必須將其粘貼到Content文件夾中,或者是什麼? – NDraskovic 2012-01-13 14:57:15

+0

不,只要路徑有效,內容管理員就可以找到它。我不確定解決方案是什麼。它在xml中有「XnaContent」標籤嗎?以及「Type = PostavkeStanice」屬性的「Asset」標籤? – 2012-01-14 15:45:32

+0

'<?XML版本= 「1.0」 編碼= 「UTF-8」?> <資產類型= 「Postavke.PostavkeStanice」> ' 這是被創建完整的XML文件。 「radnaStanica_stanje」表示「workstation_State」,「kraj」表示「結束」和「Postavke。PostavkeStanice「的意思是」Settings.WorkstationSettings「。 – NDraskovic 2012-01-16 08:34:36