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; // <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;
|
|||
|
|
}
|
|||
|
|
}
|