using UnityEngine; using UnityEngine.UI; public class PlayerHUD : MonoBehaviour { [Header("HP表示設定")] [SerializeField] private Slider hpSlider; [SerializeField] private Text hpText; [Header("Codingゲージ表示設定")] [SerializeField] private Slider gaugeSlider; [SerializeField] private Text gaugeText; private void Start() { if (PlayerStatusManager.Instance != null) { // 初期値の反映 UpdateHpUI(PlayerStatusManager.Instance.CurrentHp, PlayerStatusManager.Instance.MaxHp); UpdateGaugeUI(PlayerStatusManager.Instance.CurrentGauge, PlayerStatusManager.Instance.MaxGauge); // イベントの購読 PlayerStatusManager.Instance.OnHpChanged += UpdateHpUI; PlayerStatusManager.Instance.OnGaugeChanged += UpdateGaugeUI; } } private void OnDestroy() { if (PlayerStatusManager.Instance != null) { PlayerStatusManager.Instance.OnHpChanged -= UpdateHpUI; PlayerStatusManager.Instance.OnGaugeChanged -= UpdateGaugeUI; } } private void UpdateHpUI(float current, float max) { if (hpSlider != null) { hpSlider.maxValue = max; hpSlider.value = current; } if (hpText != null) { hpText.text = $"HP: {Mathf.CeilToInt(current)} / {Mathf.CeilToInt(max)}"; } } private void UpdateGaugeUI(float current, float max) { if (gaugeSlider != null) { gaugeSlider.maxValue = max; gaugeSlider.value = current; } if (gaugeText != null) { gaugeText.text = $"GAUGE: {Mathf.FloorToInt(current)}%"; } } }