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