using UnityEngine; using UnityEngine.UI; using UnityEngine.EventSystems; public class ButtonScaleEffect : MonoBehaviour, IPointerDownHandler, IPointerUpHandler { public float scaleTime = 0.2f; // 缩放所需的时间 public float scale = 1.1f; private Vector3 originalScale; // 按钮的原始缩放值 private Vector3 targetScale; // 目标缩放值 private float currentTime; // 当前缩放时间 private bool isScalingUp; // 是否正在放大 private void Start() { // 记录按钮的原始缩放值 originalScale = transform.localScale; targetScale = originalScale; currentTime = scaleTime; } private void Update() { if (currentTime < scaleTime) { currentTime += Time.deltaTime; // 使用Lerp方法实现平滑的缩放效果 transform.localScale = Vector3.Lerp( isScalingUp ? originalScale : originalScale * scale, targetScale, currentTime / scaleTime ); } } public void OnPointerDown(PointerEventData eventData) { // 当按钮被按下时,设置目标缩放值为1.1倍,并开始计时 targetScale = originalScale * scale; currentTime = 0f; isScalingUp = true; } public void OnPointerUp(PointerEventData eventData) { // 当按钮被松开时,设置目标缩放值为原始值,并开始计时 targetScale = originalScale; currentTime = 0f; isScalingUp = false; } }