NG_/Assets/Scripts/UI/菜单栏/ImageManager.cs

62 lines
2.3 KiB
C#
Raw Normal View History

2024-12-13 19:40:05 +08:00
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class ImageManager : MonoBehaviour
{
public Image[] images; // 在编辑器中将所有图片拖拽到这个数组中
private Image selectedImage; // 用来追踪当前选中的图片
private TextMeshProUGUI selectedText; // 用来追踪当前选中的图片的文字
private float textScaleFactor = 1.2f; // 设置文字变大时的缩放因子
void Start()
{
images[0].color = new Color32(0,255,200,255); // 设置为你希望的颜色
images[0].GetComponentInChildren<TextMeshProUGUI>().fontSize *= textScaleFactor;
selectedImage = images[0];
selectedText = images[0].GetComponentInChildren<TextMeshProUGUI>();
// 为每个图片添加点击事件
foreach (Image img in images)
{
EventTrigger trigger = img.gameObject.AddComponent<EventTrigger>(); // 添加EventTrigger组件
EventTrigger.Entry entry = new EventTrigger.Entry();
entry.eventID = EventTriggerType.PointerClick; // 设置事件类型为点击
entry.callback.AddListener((eventData) => ChangeImageColorAndTextSize(img)); // 点击时调用ChangeImageColorAndTextSize
trigger.triggers.Add(entry);
}
}
void ChangeImageColorAndTextSize(Image newImage)
{
if (selectedImage != null)
{
// 将上一个选中的图片的颜色恢复为默认颜色
selectedImage.color = Color.white;
// 恢复之前选中图片的文字大小
if (selectedText != null)
{
selectedText.fontSize /= textScaleFactor; // 恢复文字大小
}
}
// 改变当前选中图片的颜色
newImage.color = new Color32(0,255,200,255); // 设置为你希望的颜色
// 获取当前选中图片的子对象中的Text或TMP_Text组件
TextMeshProUGUI newText = newImage.GetComponentInChildren<TextMeshProUGUI>(); // 如果使用TextMesh Pro
if (newText != null)
{
newText.fontSize *= textScaleFactor; // 放大文字
}
// 更新选中图片和文字
selectedImage = newImage;
selectedText = newText;
}
}