在制作游戏时,我偶然发现了一个小问题。我有一个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)
}