Unity DoTween插件使用

DoTween下载链接:6r7a
DoTween官网API解释:DoTween文档

下面是我对b站龙子赫赫的教学视频链接的总结整理,方便之后用到的时候查询

一、一些基础功能

   Gradient gradient;
    void Start()
    {
        //目标点  时长
        transform.DOMove(Vector3.one, 3);
        //旋转
        transform.DORotate(new Vector3(100, 100, 100), 4);

        transform.DOScale(new Vector3(3, 3, 3), 4);

        //------------------------------
        //震动
         //运动方向和力的大小 持续时间 震动次数、频率
        transform.DOPunchPosition(new Vector3(0, 1, 0), 2, 3, 0.1f);
        transform.DOPunchRotation(new Vector3(100, 100, 100), 2, 3, 0.2f);
        transform.DOPunchScale(new Vector3(10, 10, 10), 5, 3, 0.4f);

        //------------------------------
        //Shake
        //持续时间 强度 频率 随机角度
        transform.DOShakePosition(3, 1, 5, 80);
        transform.DOShakeRotation(4, 19, 45);

        //------------------------------
        //
        transform.DOMove(new Vector3(10, 10, 10), 5);
        transform.DOMove(new Vector3(-2, -2, -2), 10);
        //混合方式  最终走到(8,8,8)
         transform.DOBlendableLocalMoveBy(new Vector3(10, 10, 10), 5);
        transform.DOBlendableLocalMoveBy( new Vector3(-2, -2, -2), 7);

        //------------------------------
        //动态改变材质球颜色
        Material mat = GetComponent<MeshRenderer>().material;
        mat.DOColor(Color.blue, 5);
        //对于Color名称不是_Color的时候指定名字    mat--Edit Sharder(在这里面进行设置)
         mat.DOColor(Color.blue, "_TintColoe", 3);

        //----------------------------
        //透明度
        //第一种方法
        mat.DOColor(Color.clear, 2);
        //第二种方法
        mat.DOFade(0, 2);

        //----------------------------
        //渐变颜色
        mat.DOGradientColor(gradient, 4);


        //----------------------------
        //mat偏移值
        mat.DOOffset(new Vector2(2, 3), 2);

        //-------------------------------
        //混合mat
        mat.DOBlendableColor(Color.red, 2);
        mat.DOBlendableColor(Color.blue, 2);


    }

二、相机

  void Start()
    {
        Camera cam = GetComponent<Camera>();

        //------------------------
        //设置摄像机的宽高比
         cam.DOAspect(1, 2);
         cam.DOAspect(16 / 9, 3);
        //设置摄像机颜色
        cam.DOColor(Color.red, 4);


        //设置相机近切面 远切面
        cam.DONearClipPlane(2f, 4);
        cam.DOFarClipPlane(5, 4);


        //相机可视区域
        cam.DOFieldOfView(5, 4);


        //设置相机屏幕尺寸
        cam.DORect(new Rect (0, 0, 0.5f, 0.5f), 4);
        //像素
        cam.DOPixelRect(new Rect(0, 0, 512, 512),4);

        //相机震动
        cam.DOShakePosition(4,2,5,60);
        cam.DOShakeRotation(3);
    }

三、Text

    Text txt;
    
    void Start()
    {
        txt = GetComponent<Text>();
        ///打字机效果
        ///线性 先快后慢 再快
        txt.DOText("wdwewdsrwaeawdsadwerawewa", 5);

        //匀速  SetEase(Ease.Linear);设置曲线形式
        txt.DOText("wdwewdsrwaeawdsadwerawewa", 5).SetEase(Ease.Linear);

        //-----------------------------------------
    }

四、物体运动

private void Start()
    {

        //队列
        Sequence sequence = DOTween.Sequence();
        //依次执行
        sequence.Append(transform.DOMove(new Vector3(5, 0, 0), 4));  //0-4

        //暂停x秒钟
        sequence.Append(transform.DOMove(new Vector3(0, 3, 1), 6));//9-15

        //序列的插入  插入的是时间
        //0秒插入 4秒结束  替换了第一个序列
        sequence.Insert(0, transform.DOMove(new Vector3(-5, 0, 0), 4));


        //-------------------------
        //边缩放 边移动
        sequence.Insert(0, transform.DOScale(new Vector3(4, 4, 4), 4));
        sequence.Insert(9, transform.DOScale(Vector3.one,6));

        //边缩放 边移动  另一种方法
        sequence.Append(transform.DOMove(new Vector3(5, 0, 0), 4));  //0-4
        sequence.Join(transform.DOScale(new Vector3(4, 4, 4), 4));
        sequence.AppendInterval(5);//4-9
         sequence.Append(transform.DOMove(new Vector3(0, 3, 1), 6));//9-15
        sequence.Join(transform.DOScale(Vector3.one, 6));'


        //----------------------------
        //预添加 从上往下执行 先缩放再等待一秒  比Append先执行
        sequence.Append(transform.DOMove(new Vector3(5, 0, 0), 4));
        sequence.PrependInterval(5);
        sequence.Prepend(transform.DOScale(Vector3.one * 5, 5));

        //----------------------------
        //回调 完成某件事直接执行该函数
        sequence.InsertCallback(3, DoCallBack);
        sequence.AppendCallback(AppCallBack);
        sequence.PrependCallback(PreCallBack);


        //-----------------------------------
        //链式循环
        transform.DOMove(new Vector3(4, 4, 4), 3).SetLoops(3, LoopType.Yoyo);
        //SetLoop(-1)无限次循环
        transform.DOMove(new Vector3(4, 4, 4), 3).SetLoops(-1, LoopType.Yoyo);
        //另一种写法
        TweenParams tp = new TweenParams();
        tp.SetLoops(-1, LoopType.Yoyo);
        transform.DOMove(Vector3.one * 4, 3).SetAs(tp);


        //动画之后不再用 进行自行销毁
        transform.DOMove(Vector3.one * 4, 4).SetAutoKill();
        //From()从目标点往回走(4,4,4)->(0,0,0)
        transform.DOMove(Vector3.one * 4, 4).From();


        //---------------------------------------
        //延时执行
        transform.DOMove(Vector3.one, 2).SetDelay(4);
        设置速度 DoMove(V3,4) 4不再是时间 而是基于Unity中的速度
        transform.DOMove(Vector3.one * 4, 4).SetSpeedBased(true);


        //------------------------------------
        //设置ID 调用ID
        transform.DOMove(Vector3.one * 4, 4).SetId("444");
        DOTween.Play("444");


        //----------------------------------
        //可回收对象 用不到的时候 系统自动回收
        transform.DOMove(Vector3.one * 4, 4).SetRecyclable();

        //增量的使用 ,在物体原有坐标上进行移动,如果原坐标是(4,4,4) 物体会向(8,8,8)运动
        transform.DOMove(Vector3.one * 4, 4).SetRelative();


        //设置帧类型 Updata
        transform.DOMove(Vector3.one * 4, 4).SetUpdate(UpdateType.Late);



        //----------------------
        //运动曲线  SetEase(Ease.InCirc);
        transform.DOMove(Vector3.one * 4, 4).SetEase(Ease.InCirc);

        //自定义曲线    AnimationCurve ac;
        transform.DOMove(Vector3.one * 4, 4).SetEase(ac);





        //-------------------------
        //回调  x.OnX(函数)
        transform.DOMove(Vector3.one * 4, 4).OnComplete(() =>
        {
            Debug.Log("OnComplete Coming!!!");
        });
        transform.DOMove(Vector3.one * 4, 4).OnKill(()=> {
            Debug.Log("OnKill Coming!!!!");
        });
        transform.DOMove(Vector3.one * 4, 4).OnPlay(()=> {
            Debug.Log("OnPlay Coming!!!");
        });
        //暂停
        transform.DOMove(Vector3.one * 4, 4).OnPause(() => {
            Debug.Log("OnPause Coming!!!");
        });
        //动画反复执行的时候 每一次完成时调用
        transform.DOMove(Vector3.one * 4, 4).OnStepComplete(()=> {
            Debug.Log("OnStepComplete coming!!!");
        });
        //动画从新播放时
        transform.DOMove(Vector3.one * 4, 4).OnRewind(() => {
            Debug.Log("OnRewind coming!!!");
        });

    }
    //用unity设置曲线样式
    public AnimationCurve ac;
    private void PreCallBack()
    {
        Debug.Log("PreCallBack");
    }

    private void AppCallBack()
    {
        Debug.Log("AppCallBack coming!!!");
    }

    private void DoCallBack()
    {
        Debug.Log("CallBack Coming!!!");
    }

五、动画控制

 void Start()
    {
        transform.DOMove(Vector3.one * 4, 4);
        //回到初始位置
        transform.DORewind();
        transform.DoSoothRewind();
        transform.DOPlay();
        transform.DOPause();
        //从新播放
        transform.DORestart();
        transform.DOKill();


        //翻转  先运行到(4,4,4)再回到(0,0,0)
        transform.DOFlip();

        //跳到一秒位置 然后播放
        transform.DOGoto(1, true);


        //从后往前 从前往后
        transform.DOPlayForward();
        transform.DOPlayBackwards();

         transform.DOTogglePause();

        //----------------------------------------
        //DOTween的类方法  返回的是list 
        //找到所有暂停的动画
         var list = DOTween.PausedTweens();
         var list1 = DOTween.PlayingTweens();
         DOTween.TweensById("xxx", true);
         DOTween.TweensByTarget(transform,true);
         DOTween.IsTweening(transform);
         //统计所有动画
        int all= DOTween.TotalPlayingTweens();

        ///-----------------------
        //DoTween 时间操作
        var tween = transform.DOMove(new Vector3(4, 4, 4), 4).SetLoops(2);
        //输出动画开始时间
        Debug.Log(tween.fullPosition);
        //循环次数
        Debug.Log(tween.CompletedLoops());
        //获取时间
        tween.Delay();
        //获取时间  false不包含循环的时间
        tween.Duration(true); 


        //---------------
        //DoTween和携程   携程控制循环次数
        twn= transform.DOMove(new Vector3(4, 4, 4), 4).SetLoops(2);
        StartCoroutine(WaitFun());

    }
    Tween twn;
    IEnumerator WaitFun()
    {
        //yield return twn.WaitForCompletion();

        //循环几次之后执行相关的代码
        yield return twn.WaitForElapsedLoops(2);
        //销毁的时候开始执行
        yield return twn.WaitForKill();
        //Position 表示时间位置
        yield return twn.WaitForPosition(2);

        yield return twn.WaitForRewind();

        yield return twn.WaitForStart();

        yield return twn.WaitForCompletion();
    }

六、路径动画

 public Transform[] paths;
    void Start()
    {
        //********************************************
        //路径动画的使用方法
        //使用linq方法把 数组中的所有pos 返回一个数组类型
        var listPos = paths.Select(u => u.position).ToArray();
        //根据path路径行走  
        //PathType物体行走的方式 曲线 直线
        //20 平滑度
        transform.DOPath(listPos, 5,PathType.CatmullRom,PathMode.Full3D,20,Color.red);


        //---------------------------------------------
        //路径动画SetOption的应用
        transform.DOPath(listPos, 5, PathType.CatmullRom, PathMode.Full3D, 20, Color.red)
            //设置 时候为封闭式路径
            //AxisConstraint 锁定哪一个轴
            //第二个--角度
            .SetOptions(true,AxisConstraint.X,AxisConstraint.X);


        //-----------------------------------------------
        //SetLookAt用法
        transform.DOPath(listPos, 5, PathType.CatmullRom, PathMode.Full3D, 20, Color.red)
            .SetLookAt(0);
    }
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值