在制作游戏时,我偶然发现了一个小问题。我有一个Attack()方法,当我的角色攻击敌人时必须执行该方法。例如:

public override void Attack(Object theEnemy)
{
      theEnemy.Health = theEnemy.Health - this.attack
}


例子:我攻击一个精灵。 Elf对象需要是参数,问题是参数正在寻找Object,而不是Elf。如果我想攻击其他敌方对象,例如兽人,矮人等,也是如此。我需要该参数才能接受任何对象。可能吗?

最佳答案

您可以在这种情况下使用界面,例如:

interface IEnemy
{
    void TakeDamage(int attackPower);
}

public Elf: IEnemy
{
    // sample implementation
    public void TakeDamage(int attackPower)
    {
        this.Health -= attackPower - this.Defense;
    }
}

// later on use IEnemy, which is implemented by all enemy creatures
void Attack(IEnemy theEnemy)
{
      theEnemy.TakeDamage(attack)
}

10-08 18:57