using UnityEngine; using UnityEngine.UI; using TMPro; // Красный кружок с числом на кнопке HUD: "есть что забрать". // Вешается билдером на кнопки (Задания, Почта, Награды...). panelId = id панели. public class HUDBadge : MonoBehaviour { public string panelId; GameObject badge; TextMeshProUGUI label; float next; void Start() { // Если на кнопке уже есть старый значок-заглушка из скелета -- прячем его var old = transform.Find("CountBadge"); if (old != null) old.gameObject.SetActive(false); var rt = UIKit.Make("HUDBadge", transform); rt.anchorMin = rt.anchorMax = new Vector2(1, 1); rt.pivot = new Vector2(1, 1); rt.sizeDelta = new Vector2(44, 44); rt.anchoredPosition = new Vector2(4, 4); var img = rt.gameObject.AddComponent(); img.color = new Color(0.9f, 0.15f, 0.15f); img.raycastTarget = false; label = UIKit.Text(rt, "", 26, Color.white, TextAlignmentOptions.Center); UIKit.Stretch(label.rectTransform); label.fontStyle = FontStyles.Bold; badge = rt.gameObject; badge.SetActive(false); } void Update() { if (badge == null || Time.unscaledTime < next) return; next = Time.unscaledTime + 0.5f; int n = GameProgress.Instance.BadgeCount(panelId); badge.SetActive(n > 0); label.text = n > 9 ? "9+" : n.ToString(); } }