我正在制作一个游戏,其中每个演员都由一个GameObjectController表示。可以参与战斗的游戏对象实施ICombatant。如何指定战斗功能的参数必须继承GameObjectController并实现ICombatant?还是这表明我的代码结构不良?

public void ComputeAttackUpdate(ICombatant attacker, AttackType attackType, ICombatant victim)


在上面的代码中,我希望attackervictimGameObjectController继承并实现ICombatant。这在语法上可能吗?

最佳答案

大概所有的ICombatant还必须是GameObjectControllers吗?如果是这样,您可能想创建一个新接口IGameObjectController,然后声明:

interface IGameObjectController
{
    // Interface here.
}

interface ICombatant : IGameObjectController
{
    // Interface for combat stuff here.
}

class GameObjectController : IGameObjectController
{
    // Implementation here.
}

class FooActor : GameObjectController, ICombatant
{
    // Implementation for fighting here.
}

10-08 14:25