SkillManager = {} local this = SkillManager local skillPool = BattleObjectPool.New(function () return Skill:New() end) -- this.SkillList = {} this.IsSkilling = false -- 初始化 function this.Init() this.Clear() end -- 向技能列表中追加技能 function this.AddSkill(caster, effectData, type, targets, isAdd, isRage) local skill = skillPool:Get() skill:Init(caster, effectData, type, targets, isAdd, isRage) table.insert(this.SkillList, skill) return skill end -- 插入技能到技能列表首位 function this.InsertSkill(caster, effectData, type, targets, isAdd, isRage) local skill = skillPool:Get() skill:Init(caster, effectData, type, targets, isAdd, isRage) table.insert(this.SkillList, 1, skill) return skill end -- 获取是否拥有我的技能未释放 function this.HaveMySkill(role) for _, skill in ipairs(this.SkillList) do if skill.owner == role then return true end end return false end -- 设置用于轮转的方法 function this.SetTurnRoundFunc(func) this.TurnRoundFunc = func end function this.CheckTurnRound() if this.IsSkilling then return end if this.SkillList and #this.SkillList > 0 then return end -- 没有技能释放的时候才轮转 if this.TurnRoundFunc then BattleLogic.WaitForTrigger(0.3, function() LogBlue(Language[10239]) this.TurnRoundFunc() this.TurnRoundFunc = nil end) end end -- function this.Update() -- if this.IsSkilling then return end if not this.SkillList or #this.SkillList == 0 then return end local skill = this.SkillList[1] table.remove(this.SkillList, 1) this.IsSkilling = true -- 检测技能释放 skill.owner:SkillCast(skill, function() skill:Dispose() skillPool:Put(skill) this.IsSkilling = false -- 检测一下轮转 this.CheckTurnRound() end) end -- 清除 function this.Clear() for _, skill in ipairs(this.SkillList) do skill:Dispose() skillPool:Put(skill) end this.SkillList = {} this.IsSkilling = false end return SkillManager