private void UpdateBuff(SkillCom skillCom) { float deltaTime = SkillLocate.DeltaTime; //技能冷却 for (int i = 0; i < skillCom.Skills.Count; i++) { SkillObj skillObj = skillCom.Skills[i]; skillObj.coldDown -= deltaTime; } //更新Buff for (int i = 0; i < skillCom.Buffs.Count; i++) { BuffObj buffObj = skillCom.Buffs[i]; //持续时间 if (buffObj.isPermanent == false) buffObj.duration -= deltaTime; //存在时间 buffObj.timeElapsed += deltaTime; //检测OnTick if (buffObj.model.tickTime > 0) { //为了精度*1000 if (Mathf.RoundToInt(buffObj.timeElapsed * 1000) % Mathf.RoundToInt(buffObj.model.tickTime * 1000) == 0) { ExecuteBuffTick(buffObj); buffObj.tickCnt += 1; } } //检测移除 if (buffObj.duration <= 0 || buffObj.stack <= 0) { ExecuteBuffRemove(buffObj); skillCom.RemoveBuff(buffObj); } } }