using TMPro; using UnityEngine; namespace UVC.Factory.Util { public class AlarmBadge : MonoBehaviour { [SerializeField] private RectTransform badgeRectTransform; [SerializeField] private TextMeshProUGUI badgeText; [SerializeField] private int margin = 10; [SerializeField] private int badgeCount = 0; public int BadgeCount { get => badgeCount; set { if (badgeCount == value || value < 0) return; badgeCount = value; SetBadgeCount(badgeCount); } } private void Awake() { if (badgeRectTransform == null) { badgeRectTransform = GetComponent(); } if (badgeText == null) { badgeText = GetComponentInChildren(); } SetBadgeCount(badgeCount); } private void SetBadgeCount(int count) { if (count <= 0) { badgeRectTransform.gameObject.SetActive(false); return; } badgeText.text = count.ToString(); badgeRectTransform.gameObject.SetActive(true); // 숫자 크기에 따라 badgeText 크기 조정 if (count > 999) { badgeText.text = "999+"; } else { badgeText.text = count.ToString(); } // badgeText 글자 크기에 따라 rectTransform 넓이 조절하고 Image는 badgeText 넓이 +margin 하는 코드 var sizeDelta = badgeRectTransform.sizeDelta; sizeDelta.x = badgeText.preferredWidth + margin; if(sizeDelta.x < badgeRectTransform.sizeDelta.y) { sizeDelta.x = badgeRectTransform.sizeDelta.y; // Ensure width is at least equal to height } badgeRectTransform.sizeDelta = sizeDelta; } } }