在c#中创建基于文本的游戏,如何在没有名称冲突的情况下为字典创建新项目

时间:2017-08-17 14:03:23

标签: c# visual-studio dictionary

我正在使用C#制作游戏,我希望能够动态创建项目并将其保存到字典中。

我的问题是如何在基类中创建一个新对象并保存它而不必在字典中使用名称为剑的3把剑?

基本上代码看起来像:

Sword sword = new Sword();

如何将上述新项目保存到具有唯一对象名称的字典?(或至少不同)或者我可以使用基于ID的系统,只记录我创建的剑数并设置ID类似于"sword" + swordcounter

3 个答案:

答案 0 :(得分:2)

您对使用静态int来唯一识别剑的想法可行。更好的方法可能是使用GUIDs作为游戏中所有类的标识符属性,因为GUID有效地保证是唯一的。这样做的好处是可以将GUID用作字典中的键(键类型:GUID值类型:Object),并在该字典中存储不同类型的对象(而不仅仅是Swords)。

答案 1 :(得分:0)

有很多可能的方法,我建议你做一个Item类作为每个项目的基础,然后创建一个Sword:Item类并存储在列表或数组或字典中,每个项目都是一个ID。

您仍然可以使用数组位置来跟踪您的项目,但我更喜欢ID方法^^

答案 2 :(得分:0)

我的答案有两个角度:

角度#1 - 为何选择词典?什么使用字典给你像List这样的东西不?我的意思是,除非你计划拥有数百万个不同的项目并且真的需要能够通过二进制查找特定的ID值来提升性能,我认为List(或Array)会适合你很好。

角度#2 - GUID。如果您为每个项目生成无意义的ID值,则可以使用GUID:

System.Guid.NewGuid();

这将为您提供任何给定项目的唯一值,您可以将其用作词典项目的键。