Example #1
0
 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);
         }
     }
 }