public void UpdateUI() { var resources = Owner.Data.Resources; Gold.text = Uty.KiloFormat(resources.Resource); MagicCrystals.text = Uty.KiloFormat(resources.MagicCrystals); SpiritLimit.text = $"{resources.CurrentSpiritLimit}/{resources.MaxSpiritLimit}"; }
void LateUpdate() { if (enemy != null && enemy.Prefab != null) { var enemyMaxHealth = enemy.Data.Get(Enums.Enemy.MaxHealth).Sum; var enemyCurentHealth = enemy.Data.Get(Enums.Enemy.Health).Sum; EnemyUI.transform.position = enemy.Prefab.transform.position + new Vector3(0, 90, 0); hpBar.fillAmount = (float)(enemyCurentHealth / enemyMaxHealth); hpText.text = Uty.KiloFormat(enemyCurentHealth); } else { EnemyUI.SetActive(false); } }
protected override void Awake() { base.Awake(); DamageSystem.DamageDealt += OnDamageDealt; damageNumbersPool = new ObjectPool(DamageNumber, transform, 15); levelUpTextPool = new ObjectPool(LevelUpText, transform, 5); void OnDamageDealt(DamageEventArgs e) { if (e.Target == null || e.Target.Prefab == null) { return; } var damageNumber = damageNumbersPool.PopObject(); var textComponent = damageNumber.GetComponent <TextMeshProUGUI>(); var damageText = Uty.KiloFormat((int)e.Damage); var fontColor = defaultFontColor; var random = UnityEngine.Random.Range(-20, 20); var textPositionOffset = new Vector3(random, 90 + random, random); if (e.CritCount > 0) { var sb = new StringBuilder(); for (int i = 1; i < e.CritCount; i++) { sb.Append("!"); } fontColor = critFontColor; damageText = $"{damageText} {sb.ToString()}"; } damageNumbers.Add(textComponent); damageNumber.SetActive(true); textComponent.text = damageText; textComponent.fontSize = 18 + e.CritCount * 2; textComponent.color = fontColor; damageNumber.transform.position = e.Target.Prefab.transform.position + textPositionOffset; } }