一.、Do函数只需要执行一次

      实际上,Do函数不需要放在Update中每帧执行只需要执行一次就行,比如:

void Start()
    {

       transform.DOLocalMove(new Vector3(0, 0, -5), 5f);
    }

 如果在Update中一直执行DOLocalMove,你可能会看到下面这个自动扩容提示,同时你会看到帧数也在不断下降:

这是因为每执行一次DOLocalMove操作,都会创建一个新的进程,导致重复堆积

总结:Do操作只需要执行一次!!!

但是Lerp相反,Lerp需要放在Update中每帧执行,比如:

 void Update()
    {
        transform.position = Vector3.Lerp(transform.position, new Vector3(0, 0, -5), 0.2f);
    }

二者效果差不多

这也是我之前搞混的地方,以为DOLocalMove也要放在Update中一直执行。。。。。。

此外,创建的新Do不会覆盖旧的Do,两者并行,具体可以参考:

                               Unity DoTween重复冲突的问题-CSDN博客

二、时间参数和实际执行时间基本一致,还是以上面的物体移动为例:

实际耗费时间通过下面这些函数计算:

 float StartTime,EndTime;
 bool once,First;

 void Start()
    {
        StartTime = 0f;
        EndTime = 0f;
        once = true;
        First = true;
    }
    void Update()
    {
        if (First)
        {
            transform.DOLocalMove(new Vector3(0, 0, -5), 5f);
            StartTime = Time.time;
            First = false;
        }


        if (transform.position.z == -5&&once)
        {
            transform.DOKill();
            EndTime = Time.time;
            var cost = EndTime - StartTime;
            Debug.Log("所耗时间为:"+cost+"s");
            once = false;
        }
        
    }

结果如下:

实际效果:可以看到,从(0,0,0)移动到(0,0,-5)总共花了5秒左右,符合预期

(2024-2-21修改)

似乎Do操作会自动结束,之前以为要手动    DoKill()    或   DOLocalMove().SetAutoKill()

但测了一下貌似又不会出现自动扩容提示..............

解决方法:

1.通过DoKill结束DO进程,如:
        if (transform.position.z == -5)
        {
            transform.DOKill();
        }

2.定义Tween变量t,用 t = DOTween.To()进行过渡操作,并用 t.kill()结束DO进程;

3.若要实现匀速或者其它过渡方式,可以通过 .SetEase()设置过渡方式,如下 

 transform.DOLocalMove(new Vector3(0, 0, -5), 5f).SetEase(Ease.Linear);   

Ease.Linear:线性过渡=匀速

各种过渡方式效果参考:

Unity Dotween曲线介绍 Ease曲线 Ease图表 Ease效果示例-CSDN博客

4.Lerp的使用:

Unity Lerp实现近似匀速过渡固定步长,而非由快到慢的当前比值_psp之魂的博客-CSDN博客

三、使用Do操作时,可以通过SetUpdate(bool)设定速度是否受Time.timeScale的影响。比如:当打开UI菜单时设置了Time.timeScale=0,因此之后跟UI有关的Do操作(比如用Do对UI图标进行大小变化、颜色变化)都需要设定为与Time.timeScale无关,即:  Do.SetUpdate(true)

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐