51 lines
1.4 KiB
C#
51 lines
1.4 KiB
C#
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;
|
||
}
|
||
} |