2014-01-11 48 views
0

我試圖序列化這樣的對象的範圍中的對象:C#二進制序列嘗試序列不在對象的

public void SaveHighscore() 
{ 
    string fname = Application.loadedLevelName + "_score.dat"; 
    using (Stream stream = File.Open(fname, FileMode.Create)) 
    { 
     BinaryFormatter bin = new BinaryFormatter(); 
     bin.Serialize(stream, this); 
    } 
} 

排行榜僅具有數據類型成員和類型重播的一個目的,再次只有數據類型成員以及兩個可序列化對象列表。

我越來越

SerializationException:類型GameController未標記爲可序列化。

GameController是調用object.SaveHighscore()的類。它在高分區對象本身的任何地方都沒有被引用。

編輯:解決。我有一個由gameController註冊的課程中的事件

+0

你可以考慮刪除這個問題 – Jeff

回答

0

隨着代碼顯示,你並沒有試圖序列化你的高分在任何地方。

通過使用bin.Serialize(stream, this);,您正在序列化調用類到流中(因爲this keyword)。由於當前班級爲GameController,因此它試圖序列化它。

你應該傳遞要保存到方法高分的一個實例,序列化,而不是:

public void SaveHighscore(HighScore highscore) 
{ 
    string fname = Application.loadedLevelName + "_score.dat"; 
    using (Stream stream = File.Open(fname, FileMode.Create)) 
    { 
     BinaryFormatter bin = new BinaryFormatter(); 
     bin.Serialize(stream, highscore); 
    } 
} 
+0

不,我貼作品的代碼,我只是有一個事件在由遊戲控制器註冊的對象中。因此它試圖序列化事件和所有附加的對象。 – pixartist