为对象分配多个属性

时间:2013-11-23 09:46:58

标签: c# xml list dictionary xna

在我的游戏中,它的目标是变得有点像吉他英雄,但是之前我确实制作了游戏,并且在解析XML时遇到了许多错误。它会读到这样的东西:

<song>
  <note>
    <time>1.35</time>
    <key>A</key>
  </note>
</song>

从那里开始,我会解析每个&#34;注意&#34; XML文件中的属性并将其排序为包含所有注释的字典:

public Dictionary<int, string> AssortedNotes = new Dictionary<int, string>();

然后从那里开始,我运行一个简单的ForEach语句,并根据值将其分类为子类别的词典,例如:

public Dictionary<int, string> ANotes = new Dictionary<int, string>();
public Dictionary<int, string> SNotes = new Dictionary<int, string>();
public Dictionary<int, string> DNotes = new Dictionary<int, string>();

public Dictionary<int, string> JNotes = new Dictionary<int, string>();
public Dictionary<int, string> KNotes = new Dictionary<int, string>();
public Dictionary<int, string> LNotes = new Dictionary<int, string>();

然而,这里出现了狡猾的&#39;我插入了&#39;时间&#39;属性为关键,因为如果我设置了&#39;键&#39;属性作为键,我肯定会得到错误。我的时间属性完全基于确保时间每次都不同。现在有了我制作的歌曲制作者,这就产生了一个问题,我必须对XML文件进行排序并删除可能存在的任何副本,现在这很痛苦。

我知道有更好的方法来做这样的事情,但我不确定如何做。请有人能够向我展示一种更好的做事方式,然后解释这样做的原因和原因吗?

非常感谢, 贾罗德。

1 个答案:

答案 0 :(得分:1)

我不完全理解的第一件事是你为什么将时间值存储为int?我相信TimeSpan会更好地为你服务。

关于重复项,您没有真正浏览源文件并手动删除它们。当您尝试在C#中向字典添加副本时,它将抛出ArgumentException,您可以忽略它。

现在用于存储数据。我想,游戏的流程会像吉他英雄一样。考虑到这一点,为什么不只使用List?您是否需要能够根据数据本身(Dictionary提供的功能)从集合中获取数据?我真的不明白为什么你把数据分成更多的词典,如果你能解释一下,也许我会建议你。

只需创建一个用于存储值对的类(如果存在许多输入数据或速度很重要,结构肯定会更好)并将其存储在List中。如果您需要拆分,只需在列表中循环并拆分即可。从订单中的集合中获取数据更有意义。

如果未订购输入数据,您可以使用一些可用的已排序集合,但这实际上不是必需的。

最后,指向正确的方向仍然有点难以理解你真正需要完成的事情。

相关问题