64 lines
1.7 KiB
C#
64 lines
1.7 KiB
C#
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)}%";
|
|
}
|
|
}
|
|
} |