我目前正在开发一款游戏。目前,我有一个类(游戏环境)负责保存游戏对象(敌人、武器等)的集合并进行碰撞检查、调用对象的创建例程等。随着我的进展项目,我开始怀疑我是否应该有一个更分层的方法 - 是拥有一个武器管理器、一个 EnemiesManager 和一个将所有东西放在一起的环境,还是让我的环境类像我一样操纵每个对象?我现在在做什么?
值得一提的是,游戏对象已经非常分层:
BaseClass
-----EnemyClass
----------Enemy1Subclass
----------Enemy2Subclass
-----WeaponClass
----------Weapon1Subclass
----------Weapon2Subclass
BaseClass 定义了基本的对象属性,例如位置。EnemyClass 和 WeaponClass 是相当通用的类,它们定义了更多特定于类的方法和属性,例如 EnemyClass 的速度或 WeaponClass 的伤害。它们大多存在,所以我可以拥有相当通用的集合,而不是为每个单独的敌人/武器类型单独集合。Enemy1Subclass/Enemy2Subclass 和 Weapon1Subclass/Weapon2Subclass 是实际创建和使用的敌人/武器类。
我的 Environment 类存储 EnemyClass/WeaponClass 的集合,并通过调用游戏对象的方法进行必要的操作。
Environment (manipulates EnemyClass and WeaponClass objects by iterating over their respective arrays and calling their respective methods; doesn't do any subclass-specific stuff)
-----EnemyClass array
----------Enemy1Subclass entry
----------Enemy2Subclass entry
----------Enemy1Subclass entry
-----WeaponClass array
----------Weapon1Subclass entry
----------Weapon2Subclass entry
----------Weapon2Subclass entry
但现在我想知道再分离一层是否是个好主意,Environment 持有 EnemyManager/WeaponManager 类,而各自的经理持有和操作他们的集合:
Environment (calls generic instantiation, destruction, moving, etc. methods in EnemyManager and WeaponManager; doesn't ever directly interact with an EnemyClass or WeaponClass object)
-----EnemyManager (gets instructions from Environment and manipulates EnemyClass objects to carry out those instructions)
----------EnemyClass array
---------------Enemy1Subclass entry
---------------Enemy2Subclass entry
---------------Enemy1Subclass entry
-----WeaponManager (gets instructions from Environment and manipulates WeaponClass objects to carry out those instructions)
----------WeaponClass array
---------------Weapon1Subclass entry
---------------Weapon2Subclass entry
---------------Weapon2Subclass entry
想法?建议?我找不到任何关于这种“更多课程或更努力的课程”的约定,所以任何答案都是公平的游戏,直到并包括“你的模型是垃圾,重新开始”。虽然希望不会到那个地步。;)