using UnityEngine; using TMPro; using UnityEngine.UI; public class CardUI : MonoBehaviour { [SerializeField] private TextMeshProUGUI effectText; [SerializeField] private Image iconImage; private CardData cardData; private LevelUpUIManager uiManager; private StatType s1, s2; private int v1, v2; private bool isRandomCard = false; public void Setup(CardData data, LevelUpUIManager manager) { cardData = data; uiManager = manager; RandomStatCardData randomData = cardData as RandomStatCardData; if (randomData != null) { isRandomCard = true; s1 = randomData.possibleStats[Random.Range(0, randomData.possibleStats.Length)]; do { s2 = randomData.possibleStats[Random.Range(0, randomData.possibleStats.Length)]; } while (s1 == s2); v1 = Random.Range(randomData.minValue, randomData.maxValue + 1); v2 = -Random.Range(randomData.minValue, randomData.maxValue + 1); effectText.text = $"{s1} +{v1}\n{s2} {v2}"; } else { effectText.text = cardData.GetText(); } iconImage.sprite = cardData.icon; } public void OnClick() { if (isRandomCard) { Debug.Log($"[CardClick] clicked = {gameObject.name}"); RandomStatCardData randomData = cardData as RandomStatCardData; randomData.ApplyToPlayer(s1, v1); randomData.ApplyToPlayer(s2, v2); } else { cardData.Execute(); } // ⭐ [추가] 카드 선택 직후 플레이어의 체력 UI를 강제로 동기화합니다. // 씬에서 PlayerHealth 스크립트를 찾아 갱신 함수를 실행합니다. FindObjectOfType()?.RefreshHealthUI(); uiManager.Close(); } }