67 lines
2.0 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|