sea-battle/Assets/Scripts/UI/UIButtonHighlight.cs
2026-01-09 08:45:22 +03:00

67 lines
2.0 KiB
C#

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<Image>();
buttonText = GetComponentInChildren<TextMeshProUGUI>();
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<Image>();
if (img != null)
{
img.color = state ? highlightOnColor : highlightOffColor;
continue;
}
// 2. Čëč SpriteRenderer
var sr = obj.GetComponent<SpriteRenderer>();
if (sr != null)
{
sr.color = state ? highlightOnColor : highlightOffColor;
continue;
}
}
}
}
}