51 lines
1.4 KiB
C#
Raw Normal View History

2025-09-19 17:28:05 +08:00
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
public class ButtonScaleEffect : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
{
public float scaleTime = 0.2f; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
public float scale = 1.1f;
private Vector3 originalScale; // <20><>ť<EFBFBD><C5A5>ԭʼ<D4AD><CABC><EFBFBD><EFBFBD>ֵ
private Vector3 targetScale; // Ŀ<><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
private float currentTime; // <20><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
private bool isScalingUp; // <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ڷŴ<DAB7>
private void Start()
{
// <20><>¼<EFBFBD><C2BC>ť<EFBFBD><C5A5>ԭʼ<D4AD><CABC><EFBFBD><EFBFBD>ֵ
originalScale = transform.localScale;
targetScale = originalScale;
currentTime = scaleTime;
}
private void Update()
{
if (currentTime < scaleTime)
{
currentTime += Time.deltaTime;
// ʹ<><CAB9>Lerp<72><70><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>
transform.localScale = Vector3.Lerp(
isScalingUp ? originalScale : originalScale * scale,
targetScale,
currentTime / scaleTime
);
}
}
public void OnPointerDown(PointerEventData eventData)
{
// <20><><EFBFBD><EFBFBD>ť<EFBFBD><C5A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵΪ1.1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>ʱ
targetScale = originalScale * scale;
currentTime = 0f;
isScalingUp = true;
}
public void OnPointerUp(PointerEventData eventData)
{
// <20><><EFBFBD><EFBFBD>ť<EFBFBD><C5A5><EFBFBD>ɿ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵΪԭʼֵ<CABC><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ʱ
targetScale = originalScale;
currentTime = 0f;
isScalingUp = false;
}
}