88 lines
2.5 KiB
C#
88 lines
2.5 KiB
C#
using System;
|
|
using AibisDream.Kit;
|
|
using AibisDream.Utility;
|
|
using DG.Tweening;
|
|
using UnityEngine;
|
|
|
|
namespace AibisDream.Kit
|
|
{
|
|
public class SpriteDeepIn : MonoBehaviour
|
|
{
|
|
private const int TopLayer = 20;
|
|
private const int BottomLayer = 19;
|
|
private const string LayerName = "FixMiddle";
|
|
|
|
public Sprite[] spriteArr;
|
|
|
|
public float duration;
|
|
|
|
public event Action OnFinished;
|
|
|
|
private SpriteRenderer _renderer1;
|
|
private SpriteRenderer _renderer2;
|
|
|
|
private float _curProgress;
|
|
private int _curIndex;
|
|
|
|
private void Update()
|
|
{
|
|
if (Input.GetKeyDown(KeyCode.K))
|
|
{
|
|
Play();
|
|
}
|
|
}
|
|
|
|
public void Play()
|
|
{
|
|
_renderer2 = transform.Find("Renderer1").GetComponent<SpriteRenderer>();
|
|
PlayNext();
|
|
}
|
|
|
|
private void PlayNext()
|
|
{
|
|
_curIndex++;
|
|
// 所有图片播放完毕则退出
|
|
if (_curIndex >= spriteArr.Length)
|
|
{
|
|
OnFinished?.Invoke();
|
|
return;
|
|
}
|
|
// 播放下一个图片
|
|
InitNewSprite(_curIndex);
|
|
// 缩放
|
|
_curProgress = 0.01f;
|
|
DOTween.To(() => _curProgress, value => _curProgress = value, 1, duration)
|
|
.SetEase(Ease.InQuad)
|
|
.OnUpdate(UpdateSprite)
|
|
.OnComplete(PlayNext);
|
|
}
|
|
|
|
private void InitNewSprite(int index)
|
|
{
|
|
if (_renderer1)
|
|
{
|
|
Destroy(_renderer1.gameObject);
|
|
}
|
|
|
|
_renderer1 = _renderer2;
|
|
_renderer2 = new GameObject().AddComponent<SpriteRenderer>();
|
|
_renderer2.transform.SetParent(transform);
|
|
// 处理层级
|
|
_renderer1.sortingLayerName = LayerName;
|
|
_renderer1.sortingOrder = BottomLayer;
|
|
_renderer2.sortingLayerName = LayerName;
|
|
_renderer2.sortingOrder = TopLayer;
|
|
_renderer2.transform.localScale = Vector3.one * 0.01f;
|
|
// 添加图片
|
|
_renderer2.sprite = spriteArr[index];
|
|
}
|
|
|
|
private void UpdateSprite()
|
|
{
|
|
// 大图片缩放
|
|
_renderer1.transform.localScale = Vector3.one * (_curProgress * 100);
|
|
// 小图片缩放
|
|
_renderer2.transform.localScale = Vector3.one * _curProgress;
|
|
}
|
|
}
|
|
} |