Projext/Assets/Scripts/UI/HUD/Player Stat UI.cs
2026-02-02 17:30:23 +09:00

46 lines
1.6 KiB
C#

using UnityEngine;
using TMPro;
public class PlayerStatsUI : MonoBehaviour
{
[Header("--- 데이터 연결 ---")]
[SerializeField] private Stats playerStats;
[Header("--- UI 오브젝트 ---")]
[SerializeField] private GameObject statWindowPanel;
[Header("--- 텍스트 UI ---")]
[SerializeField] private TextMeshProUGUI maxHealthText;
[SerializeField] private TextMeshProUGUI strengthText;
[SerializeField] private TextMeshProUGUI damageText;
[SerializeField] private TextMeshProUGUI speedText;
private void Start()
{
if (statWindowPanel != null) statWindowPanel.SetActive(false);
}
public void ToggleWindow()
{
if (statWindowPanel == null) return;
bool isActive = !statWindowPanel.activeSelf;
statWindowPanel.SetActive(isActive);
if (isActive) UpdateStatTexts();
}
public void UpdateStatTexts()
{
if (playerStats == null) return;
maxHealthText.text = $"MaxHP: {playerStats.MaxHealth}";
strengthText.text = $"Strength: {playerStats.Strength}";
// ⭐ 데미지: 최종합 (+무기보너스)
damageText.text = $"Damage: {playerStats.TotalAttackDamage} (+{playerStats.weaponDamage})";
// ⭐ [수정] 스피드: 현재속도 (-무게페널티) 형태로 표기합니다.
// 페널티가 0보다 클 때만 빨간색 느낌으로 괄호 수치를 띄워줍니다.
string penaltyText = playerStats.WeightPenalty > 0 ? $" (-{playerStats.WeightPenalty:F1})" : "";
speedText.text = $"Speed: {playerStats.CurrentMoveSpeed:F1}{penaltyText}";
}
}