IEnumerator AverageDamage(DamageVO damageVO, float delay, float gapTime, int count) { yield return(new WaitForSeconds(delay)); if (count <= 0) { count = 1; } float totalVal = damageVO.value; if (Mathf.Abs(totalVal) < count) { count = Mathf.CeilToInt(Mathf.Abs(totalVal)); } float averageVal = totalVal / count; for (int i = 0; i < count; i++) { try { DamageVO vo = damageVO.Clone(); vo.value = averageVal; Damage(vo); } catch (System.Exception e) { if (Application.isEditor) { Debug.Log(e); } break; } yield return(new WaitForSeconds(gapTime)); } }