Files
VRProject/Assets/_Scripts/PlayerHUD.cs
ohgushiyuga 9864b95a91 HPbarzissou
2026-08-27 17:59:06 +09:00

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)}%";
}
}
}