Ver.0.3.0.33
This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user