2011-08-07 77 views
1

我期待着實現排名前十的基本排行榜。它只會在本地存儲在xbox/pc上,不需要任何聯網/全局同步。我嘗試更新下面的鏈接到xna4,但收到兩種格式的序列化錯誤,並將樂譜數據拉成一個很好的屏幕格式 - 任何想法或替代方法? http://xnaessentials.com/tutorials/highscores.aspx/tutorials/highscores.aspxXNA基本排行榜

此外,使用遊戲手柄進入玩家名稱的建議方式是什麼? (不使用配置文件名稱)

謝謝 Paul。

+0

當您試圖保存高分列表或加載一個時,您是否收到錯誤消息?另外,你能否提供關於錯誤的更多細節?您將要使用XML序列化,並且該教程似乎適合我。 –

+0

我使用TitleLocation更新了 - Path.Combine行,只是硬編碼了路徑「/content/hi.lst」 - 這在PC上正常工作。這工作和加載並保存大部分時間,但有時我收到一個錯誤「xml文檔(52,17)中有錯誤」 - 這是在文件的最後位置添加額外>符號 - 它看起來是文件更新/覆蓋,但稍微不合適的地方 - 我已經嘗試更新到File.Write,也創建而不是OpenorCreate,但這不會改變錯誤。 任何想法?? – Paul

回答

0

如您所見,HighScoreData定義只包含對數組元素的引用,而不是元素本身,因爲它們在其構造函數中初始化。 XmlSerializer不知道count是不是也可以調用一個參數化的構造函數。由於HighScoreData是struct,因此無法定義無參數構造函數(並且「幕後」發生的構造函數不會創建數組元素)。

解決方案(儘可能少地改變代碼)是將HighScoreData更改爲class並創建無參數的構造函數。要做後者,你必須事先決定陣列的大小。因此:

public class HighScoreData 
{ 
    public string[] PlayerName; 
    public int[] Score; 
    public int[] Level; 

    public const int MaxScores = 100; 

    public HighScoreData() 
    { 
     PlayerName = new string[MaxScores]; 
     Score = new int[MaxScores]; 
     Level = new int[MaxScores]; 
    } 
}