public void SetUnit(Unit unit, bool forceRefresh) { if (unit == currentUnit && !forceRefresh) { return; } if (currentUnit != null) { (currentUnit.Health as Health).OnHealthEvent.RemoveListener(OnUnitHealthEvent); } currentUnit = unit; int i = 0; if (unit != null) { (currentUnit.Health as Health).OnHealthEvent.AddListener(OnUnitHealthEvent); UpdateHealth(currentUnit.Health); healthBarSlider.gameObject.SetActive(true); foreach (Ability ability in unit.Abilities) { if (i > abilityButtons.Count) { Debug.LogWarning("Too many abilities for UI to display"); break; } AbilityButton abilityButton = abilityButtons[i]; abilityButton.SetAbility(ability, hotkeys[i].ToString()); i++; } } else { healthBarSlider.gameObject.SetActive(false); } for (; i < abilityButtons.Count; i++) { abilityButtons[i].SetAbility(null, null); } unitNameLabel.text = unit != null ? unit.Name : ""; UpdateItemsUi(unit); }