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(); } uiManager.Close(); } }