在进行游戏编程的时候,有许多类中的函数名都会撞车,我会在不同枪支下声明一个开火函数,我会在敌人函数中声明一个MeleeAttack函数,但是不同类中的函数实现过程却是不同的。
例如普通僵尸会挥舞爪子,而更牛逼一点的士兵会使用武器攻击。
class Zombie extends Pawn; function MeleeAttack() { 近战攻击 } class Soilder extends Pawn; function MeleeAttack() { 拿武器攻击,不同武器攻击方式不同 }
既然使用接口来实现这些,接口当然要给这些内容提供一个统一的标准。电源插座,USB。
接口为接下来的类提供了统一的函数标准,例如所有枪支的开火函数,实现接口PrimaryFire。接口会强制这些实现接口类实现必要的函数,否则编译器就会报错,这对于错误检查真是把双刃剑。
2.接口实例
接口将需要统一实现的内容,束在一起,就像集线器一样,当然他不能实例化内存
Iterface Enemy; const Damge=20; //伤害值 const AnimRate=0.2; //攻击频率 function MeleeAttack(float AnimRate); function TakeDamage(int Damage);
实现接口
class Goblin extends Pawn implements(Enemy); function MeleeAttack(float Rate) { if(Rate>class'Enemy'.const.AnimRate) { DoAnim(Rate); } }
如果我在Goblin中没有实现TakeDamage(int Damage)函数,将会出现华丽的报错。