【发布时间】:2009-08-20 19:01:59
【问题描述】:
我正在构建一个由手机组成的简单游戏——游戏中的角色 (Mobs)。每个暴徒都可以执行某些功能。为了向 Mob 提供该功能,我创建了一个 Behavior。
例如,假设一个暴徒需要在游戏场中移动,我会给它 MoveBehavior - 这将添加到暴徒类的内部行为列表中:
// Defined in the Mob class
List<Behavior> behaviors;
// Later on, add behavior...
movingMob.addBehavior(new MovingBehavior());
我的问题是这样的。大多数行为都会操纵有关暴民的某些东西。在 MoveBehavior 示例中,它将改变生物在世界中的 X、Y 位置。但是,每个行为都需要特定的信息,例如“movementRate”——movementRate 应该存储在哪里?
它应该存储在 Mob 类中吗?其他生物可能会尝试通过减慢/加速生物与它进行交互,并且在生物级别更容易访问......但并非所有生物都有移动率,因此会导致混乱。
还是应该将其存储在 MoveBehavior 类中?这将其隐藏起来,使其他生物更难与之交互 - 但它不会用额外和未使用的属性使不动的生物混乱(例如,不会移动的塔永远不需要使用运动速率)。
【问题讨论】:
-
我想知道使用脚本语言(IronRuby、IronPython、F# 等)来处理游戏中所需的元数据是否是个好主意。
标签: c# architecture