45 lines
1.6 KiB
C#
45 lines
1.6 KiB
C#
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<Image>();
|
|
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();
|
|
}
|
|
}
|