-- 技能目标选取器,找到要释放的对象 local SimpleSkillSelector = LuaClass("SimpleSkillSelector") SimpleSkillSelector.CasterPawn = nil SimpleSkillSelector.TargetPawns = {} SimpleSkillSelector.ForwardOffset = 0 SimpleSkillSelector.Param_Float = 0 SimpleSkillSelector.Param_Vector = {X = 0, Y = 0, Z = 0} function SimpleSkillSelector:ctor() end function SimpleSkillSelector:InitSelectorFromData(SelectorData, CasterPawn) self.CasterPawn = CasterPawn self.LimitNum = SelectorData.LimitNum self.ForwardOffset = SelectorData.ForwardOffset self.Param_Float = SelectorData.Param_Float self.Param_Vector = SelectorData.Param_Vector end function SimpleSkillSelector:GetIgnoredActors() local ActorsToIgnore = {} table.insert(ActorsToIgnore, self.CasterPawn) if self.CasterPawn.IsInArena then --如果在场内,则忽略所有练功房的怪物 local AllHangUpRoomSpawners = UGCGameSystem.GameState:GetAllHangUpRoomSpawners() for _, HangUpRoomSpawner in pairs(AllHangUpRoomSpawners) do for _, SpawnedMonster in pairs(HangUpRoomSpawner.SpawnedMonsters) do if SpawnedMonster ~= nil and UE.IsValid(SpawnedMonster) and UGCSimpleCharacterSystem.GetHealth(SpawnedMonster) > 0 then table.insert(ActorsToIgnore, SpawnedMonster) end end end else --如果在练功房,则忽略场内进攻怪 local AttackWaveSpawner = UGCGameSystem.GameState:GetAttackWaveSpawner() if AttackWaveSpawner then for _, SpawnedMonster in pairs(AttackWaveSpawner.SpawnedMonsters) do if SpawnedMonster ~= nil and UE.IsValid(SpawnedMonster) and UGCSimpleCharacterSystem.GetHealth(SpawnedMonster) > 0 then table.insert(ActorsToIgnore, SpawnedMonster) end end end end return ActorsToIgnore end --- 子类实现 function SimpleSkillSelector:ActivateSelector() UE.Log("[SimpleSkillSelector] activated") end function SimpleSkillSelector:GetTargetPawns() self.TargetPawns = {} self:ActivateSelector() return self.TargetPawns end return SimpleSkillSelector;