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 () {
}
}