public IEnumerator ChangeValue(int changedValue) { m_ChangedValue.text = string.Format("{0}{1}", changedValue > 0 ? "+" : "-", Mathf.Abs(changedValue)); m_ChangedValue.color = changedValue > 0 ? Color.green : Color.red; var step = changedValue > 0 ? 1 : -1; var finalValue = m_ProgressBar.value + changedValue; var wait = new WaitForSeconds(0.02f); m_ChangedValue.SetActive(true); yield return(m_Animation.PlayAndWait()); m_ChangedValue.SetActive(false); while (m_ProgressBar.value != finalValue) { var newValue = m_ProgressBar.value + step; if (newValue <= m_ProgressBar.minValue || newValue >= m_ProgressBar.maxValue) { yield break; } m_ProgressBar.value = newValue; yield return(wait); } m_ProgressBar.value = finalValue; }