IEnumerator Repair() { ant1.SetActive(true); ant2.SetActive(true); ant3.SetActive(true); while (_repairState <= 1.0f) { _repairState += repairSpeed; float _repairPercentage = _repairState * 100; //repairTextStatus.text = _repairPercentage.ToString(); yield return(new WaitForSeconds(0.15f)); if (_repairState > 0.33 && _repairState < 0.66) { GetComponentInChildren <SpriteRenderer>().sprite = halfState; } else if (_repairState > 0.66) { GetComponentInChildren <SpriteRenderer>().sprite = quarterState; } } if (_repairManager.repairQueue.Count > 0) { _repairManager.repairQueue.Dequeue(); } //repairTextStatus.text = "Not repairing"; // send message to event manager that repair is complete _repairManager.RepairNextObject(); Destroy(gameObject); }