Interface 让敌人不仅仅能识别一方

  炮塔当然不仅仅能识别一种敌人,僵尸,人类,机器人都不会放过。Interface可以很好地完成这种囧境。

接口仅能包含不影响类的内存布局的声明 – 可以声明枚举值、结构体和常量,但是不能声明变量。

  我将牵扯到AttackInterface的相关信息全部罗列出来。

class AntTower extends pawn placeble;

var  array<AntAttackInterface>  DetectedAttackInterfaces;
var AntAttackInterface CurrentEnemy;

      在Touch中检测,该过程发生在上一章的Delegate实现函数。

local AntAttackInterface AntAttackInterface;

AntAttackInterface=AntAttackInterface(Other);

//检索数组中有没有
if(AntAttackInterfaces.Find(AntAttackInterface)==INDEX_NONE)
{
      DetectAttackInterfaces.AddItem(AntAttackInterface);
}

  进入AttackInterface内部,AntAttackInterface类的实现Actor,可以标注攻击和被攻击的Actor。像Pawn就能很好的使用。

  以下是当添加到DetecAttackInterfaces列表中后怎么定义去攻击列表目标,当前的目标。

event Tick(float DeltaTime)
{
     for(i=0;i<DetectAttackInterfaces.length;++i)
     {
           if(DetectAttackInterface[i].IsValidToAttack())
           CurrentEnemy=DetectAttackInterfaces[i];
     }
}
interface AntAttackInterface;

  

原文地址:https://www.cnblogs.com/NEOCSL/p/2840448.html