2011-08-07 38 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]; 
    } 
}