炮塔当然不仅仅能识别一种敌人,僵尸,人类,机器人都不会放过。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;