using System.Collections; using Sirenix.OdinInspector; using TMPro; using UnityEngine; using UnityEngine.UI; // ReSharper disable once CheckNamespace namespace BlueWaterProject { public class FieldBossHpSlider : MonoBehaviour { [SerializeField] private Slider slider; [SerializeField] private TMP_Text nameText; [SerializeField] private Slider damageEffectSlider; [SerializeField] private float duration = 1f; [Button("셋팅 초기화")] private void Init() { slider = GetComponent(); nameText = transform.Find("NameText").GetComponent(); damageEffectSlider = transform.Find("Fill Area/Background/DamageEffectSlider").GetComponent(); } public void SetHpSlider(float maxHp, string bossName) { if (!slider || !damageEffectSlider) return; slider.maxValue = maxHp; damageEffectSlider.maxValue = maxHp; slider.value = maxHp; damageEffectSlider.value = maxHp; nameText.text = nameText ? bossName : null; SetActiveHpSlider(true); } public void UpdateHpSlider(float value) { if (!slider || !damageEffectSlider) return; StartCoroutine(DamageEffect(value)); } private IEnumerator DamageEffect(float value) { var previousHp = slider.value; var tick = (previousHp - value) / duration; slider.value = value; while (damageEffectSlider.value > value) { damageEffectSlider.value -= tick * Time.deltaTime; yield return null; } damageEffectSlider.value = value; } public void SetActiveHpSlider(bool value) => gameObject.SetActive(value); } }