using UnityEngine; using UnityEngine.UI; using TMPro; public class UIButtonHighlight : MonoBehaviour { public GameObject[] highlightObjects; // Элементы (рамки/иконки), которым меняем цвет public Color normalColor = Color.white; // Цвет фона кнопки public Color highlightedColor = Color.yellow; // Цвет фона при выделении public Color highlightOnColor = Color.yellow; // Цвет highlight-объектов когда выбрана public Color highlightOffColor = Color.white; // Цвет highlight-объектов когда не выбрана private Image buttonImage; private TextMeshProUGUI buttonText; private Color originalTextColor; public Color disabledTextColor = Color.gray; void Awake() { buttonImage = GetComponent(); buttonText = GetComponentInChildren(); if (buttonText != null) originalTextColor = buttonText.color; SetHighlighted(false); } public void SetHighlighted(bool state) { // Меняем цвет фона кнопки if (buttonImage != null) buttonImage.color = state ? highlightedColor : normalColor; // Меняем цвет текста if (buttonText != null) buttonText.color = state ? originalTextColor : disabledTextColor; // Меняем цвет всех highlight-объектов if (highlightObjects != null) { foreach (var obj in highlightObjects) { if (!obj) continue; // 1. Ищем Image var img = obj.GetComponent(); if (img != null) { img.color = state ? highlightOnColor : highlightOffColor; continue; } // 2. Или SpriteRenderer var sr = obj.GetComponent(); if (sr != null) { sr.color = state ? highlightOnColor : highlightOffColor; continue; } } } } }