C# 地图的每个区域都应该有自己的类吗?

C# 地图的每个区域都应该有自己的类吗?,c#,map,xna,2.5d,C#,Map,Xna,2.5d,警告:这里是新华社Noobie 我正在制作一个2d自上而下的rpg,有点像口袋妖怪。在我的游戏中,除了主游戏类外,我还有一个玩家类和一个地图类。对于地图的每个区域(例如Town.cs、Forest.cs、River.cs),我应该有单独的类吗?如果是,它们应该从父类继承吗?或者我应该只有一个通用的MapRegion类,并且让地图的每个区域都只是MapRegion的一个实例吗?这个决定取决于不同的区域是否需要不同的功能。如果唯一的区别是地形/障碍物/建筑物/诸如此类的东西,那么使用通用的MapRe

警告:这里是新华社Noobie


我正在制作一个2d自上而下的rpg,有点像口袋妖怪。在我的游戏中,除了主游戏类外,我还有一个玩家类和一个地图类。对于地图的每个区域(例如Town.cs、Forest.cs、River.cs),我应该有单独的类吗?如果是,它们应该从父类继承吗?或者我应该只有一个通用的MapRegion类,并且让地图的每个区域都只是MapRegion的一个实例吗?

这个决定取决于不同的区域是否需要不同的功能。如果唯一的区别是地形/障碍物/建筑物/诸如此类的东西,那么使用通用的MapRegion类并将不同的地图存储在外部数据文件中以供每个MapRegion加载会更有意义。但是,如果这些区域在代码中的处理方式上存在显著差异(这对于神奇宝贝风格的游戏来说可能不太可能),那么您将创建不同的子类。基本上可以归结为它们是功能不同,还是只持有不同的数据。

我认为每个级别有不同的类并不好,但可以有一些需要不同类的特殊级别。在大多数情况下,我会创建一个基类,如果我需要一个特殊的映射,我会创建一个子类

基本映射类将具有一些更通用的成员:

  • 列表结构
  • 列出NPC
  • 背景纹理

  • 等等……

    “视情况而定”。通常,您希望所有公共数据和功能都位于一个位置(基类),而特殊数据和功能位于特殊位置(子类)。因此,如果一个城镇的行为与森林或河流不同,那么就有不同的儿童班。有很多子类并没有什么坏处,只要你记得把所有的普通东西都保留在基类中。如果您想将代码从一个子类复制粘贴到另一个子类:不要!将其放在基类中。无论何时使用映射变量,都要将它们设置为基类类型,并用合适的子类填充它们。我认为最好使用一个类
    MapRegion
    ,该类以某种配置进行读取,以在其上创建所有“内容”。如果整个区域需要不同的行为,请使用MapRegion的子类,否则我会使MapRegion由一堆瓷砖组成。每个磁贴都可以指定自己的行为和事件,这样地图就可以保持简单…这是我想知道的另一件事。我刚刚制作了一个模型,这样在我开始制作实际游戏之前,我可以测试一些基本的东西,所以我只是使用来自《母亲3》的图像作为我的地图。我是否应该将每个单独的对象(例如房屋、仙人掌、山脉)作为一个“结构”,而不是只有一个图像?这些结构是否具有不同的属性,例如
    bool Passable
    ?通常,这些类型的游戏都使用瓷砖。现在是有一个tile类还是有几个子tile类。。。“视情况而定”。^^^;这就把我们带入了碰撞检测,这是一个完全不同的问题…我认为在一张地图上有不同的结构比仅仅加载一张图像更好它给了你更多的控制,即使这样,只需几个不同的函数,您就可以创建一个
    MapRegion
    ,它接受一对
    操作
    变量-无需继承。