先来看一下demo:
在demo中呢,图片1(左侧的image)与图片2(右侧的image)做了一个从0->1的缩放动画。之前我做这些简单的动画都是默认让图片初始大小为0,然后用dotween插件的函数进行缩放至1。如果只是使用一次的话,倒没什么。如果需要多次使用的话,那么第二次使用时,必须初始化图片的大小,也就是让图片大小设置为0,再进行动画的播放,不然是没有这个动效的。而第二种方法呢就是用一个动画反向运动的方法来实现,也就是加From()这个方法。具体测试代码,下面会给出。利用这个反向运动,可以重复播放同一个动画而不需要做初始化。算是一个小技巧吧,这里记录一下!!
两张图片的初始大小:
测试代码如下:
using DG.Tweening;
using UnityEngine;
using UnityEngine.UI;
/// <summary>
///
/// * Writer:June
/// *
/// * Data:2021.3.10
/// *
/// * Function:缩放例子
/// *
/// * Remarks:
///
/// </summary>
public class ZoomTest : MonoBehaviour
{
public Image image1, image2;
public Button zoomButton1, zoomButton2;
private void Start()
{
zoomButton1.onClick.AddListener( delegate
{
image1.gameObject.SetActive(true);
image1.transform.DOScale(1, 0.5f).SetEase(Ease.OutBack);
});
zoomButton2.onClick.AddListener(delegate
{
image2.gameObject.SetActive(true);
//From()是倒置动画
image2.transform.DOScale(0, 0.5f).From().SetEase(Ease.OutBack);
});
}
}
比如下面这个例子:
是一个官方的例子,在例子中,这个框选人物,选中之后,人物脚下的光环从0放大到1的过程。这个动画是很简单的,但是你如果用上述的第一个方式的话,每次都要进行初始化,当然你要这样做也不是什么坏事,这里只是多提供一下小技巧罢了。而第二种方式的话呢,直接一行代码搞定。
补充:
在上述我写的代码中,我发现一个问题,就是疯狂点击button2按钮,会导致图片2越来越小,造成这样的原因是上一次点击的动画还没播放完,再继续播放下一次动画,就会出现这样的问题。解决方法呢,就是使用DOComplete()方法。
在动画播放的前面,加上就可以解决问题了。