Bootstrap

DOTween

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening;
using UnityEngine.UI;
public class Test : MonoBehaviour {

    public Gradient gradient;

    public AnimationCurve curve;

    private Tween _tweener;

	// Use this for initialization
	void Start () {

        Vector3 v = new Vector3(95f, 95f, 95f);
        transform.DOMove(Vector3.one, 5);
        transform.DOLocalMoveX(10, 5);
        transform.DOLocalMove(Vector3.one, 5);
        transform.DORotate(v, 5);
        //第一个参数为方向、力的大小,第二个参数:持续时间,第三个参数:频率,第四个参数:取值范围0-1、弹性
        transform.DOPunchPosition(new Vector3(0, 10, 0), 5, 10, 1f);

        transform.DOShakePosition(5, Vector3.one, 10, 80);//1:时间。2:力的大小和方向。3:频率。4:震动的方向和范围。

        transform.DOMove(Vector3.one, 12);
        transform.DOBlendableMoveBy(Vector3.one * 2, 2);

        Material material = GetComponent<MeshRenderer>().material;
        material.DOColor(Color.red, 10);

        material.DOFade(0, "_TintColor", 2);
        material.DOGradientColor(gradient, "_TintColor", 5);

        material.DOVector(Color.clear, "_TintColor", 2);
        Camera camera = GetComponent<Camera>();
        camera.DOAspect(1f, 2); //更改摄像机的宽高比

        camera.DOColor(Color.red, 2);//更改摄像机的背景颜色

        camera.DOFieldOfView(1f, 5);
        camera.DOPixelRect(new Rect(360, 540, 360, 540), 5);
        camera.DORect(new Rect(0f, 0f, 0.5f, 0.5f), 5);

        camera.DOShakePosition(2, 50, 05);

        //TEXT
        Text text = GetComponent<Text>();
        text.DOText("磊哥磊哥你真优秀oh yeah", 5);

        //将动画动作存储在队列中并依次执行
        Sequence quence = DOTween.Sequence();
        quence.Append(transform.DOMove(Vector3.one, 2));//0-2s   //在队列中添加动画
        quence.Join(transform.DOScale(Vector3.one * 5, 2));//将此动画同上方的动画一同执行
        quence.AppendCallback(InsertCallBack);//Append中的回调函数。

        quence.AppendInterval(1);//  在两个动画间添加延迟
        quence.Append(transform.DOMove(new Vector3(1, 0, 0), 2));

        quence.Insert(0, transform.DOMove(-Vector3.one, 2));//作用:在时间点0s处插入此动画,并覆盖之前同时间段内的同类型动画

        quence.PrependInterval(1);//prepend中的延迟方法
        quence.Prepend(transform.DOMove(-Vector3.one * 2, 2));//作用与insert类似,不同之处为:insert先添加先执行,Prepend为先添加后执行
        quence.PrependCallback(InsertCallBack);//Prepend中的回调函数

        quence.InsertCallback(6, InsertCallBack);//回调函数

        transform.DOMove(Vector3.one, 2).SetLoops(-1, LoopType.Incremental);
        //作用为表示循环操作,其中-1表示无限循环,若将-1改为正整数则为循环次数yoyo表示来回,
        //Restar表示快速闪回,Incremental表示沿着一个方向移动。
        transform.DOMove(Vector3.one, 2).From();//表示为从目标点运动回起始点,若参数为true时则表示进行增量运动

        transform.DOMove(Vector3.one, 2).SetDelay(3);//表示将动画延迟执行

        transform.DOMove(Vector3.one * 50, 5).SetSpeedBased();//以速度为基准朝目标点移动

        transform.DOMove(Vector3.one, 10).SetId("ID0");//dotween会将运动部分的动画进行缓存,此方法为:为动画设定id,方便下面调用缓存中的动画
        DOTween.Play("ID0");//通过id调用响应动画

        transform.DOMove(Vector3.one, 2).SetRecyclable(true);//设定此动画是否可以被回收 
        transform.DOMove(Vector3.one, 2).SetRelative(true);//将此运动方式设置为增量运动

        //利用自定义函数设置运动曲线
        transform.DOMove(Vector3.one * 2, 2).SetEase(EaseFun);

        //0113 0944
        //回调函数、
        transform.DOMove(Vector3.one * 2, 2).OnComplete(() => { Debug.Log("sss"); });//当动画完成时回调lamd表达式中的内容,也有很多在其他情况下进行函数回调

        //动画的控制方法
        transform.DOMove(Vector3.one * 3, 5);
        transform.DOPause();//暂停
        transform.DOPlay();//播放
        transform.DORestart();//重新播放
        transform.DORewind();//动画反向播放
        transform.DOSmoothRewind();//动画平滑的反向播放
        transform.DOGoto(1, true);//跳转到指定时间点,true表示播放动画
        transform.DOTogglePause();//在运行时调用则暂停,在暂停时调用则运行 
        var list = DOTween.PlayingTweens();//获取正在播放的动画,获取暂定动画的函数为playingpause()
        var list = DOTween.TweensById("id", true);//获取名为id且正在播放的动画
        var list = DOTween.TweensByTarget(transform, true);//收集对象为transform的动画,true表示正在播放的,若为false则将所有动画都收集过来
        var list = DOTween.IsTweening("id", true);//当为true时检测给定对象是否有正在播放的动画,若为false检测当前所有动画

        var list = DOTween.TotalPlayingTweens();//将具有延迟状态的动画也被算到正在播放动画的范围内

        //重点重点重点
        //重点重点重点
        //重点重点重点
        //表示await上面的函数正常执行,而await下面的函数需要等1s后执行
        //await Task.Delay(TimeSpan.FromSecopnds(1));
        //dosomething();
        _tweener = transform.DOMove(Vector3.one * 3, 1).SetLoops(3);
        tweener.Delay();//判断延迟时间
        tweener.Duration();//获取动画的持续时间,若参数为true则包含循环的时间,反之不包含循环
        tweener.Elapsed();//代表当前已经播放的时间,参数中的true,false作用同Duration();
        _tweener.ElapsedDirectionalPercentage();//表示动画执行到了总里程的百分比

        //unity中的协程
        StartCoroutine(Wait());


    }


    //协程
    private IEnumerator Wait()
    {

        //当_tweener动画执行1次后调用yield return下方的逻辑
        yield return _tweener.WaitForElapsedLoops(1);
        Debug.Log("ssss");

    }

    //返回值范围[0,1] 取值为0时表示在在起始点,取值为1时表示运动到目标点
    //函数中的参数1:物体运行到的时间,参数2:持续时间,参数3:震动次数,参数4:震动强度
    private float EaseFun(float time, float duration, float overshootOrAmplitude, float period) {

        return time / duration + 1;
    }
	
    private void InsertCallBack()
    {
        Debug.Log("InsertCallBack");
    }

	// Update is called once per frame
	void Update () {
		
	}
}

 

;