Unity插件之DOTween学习笔记

前言

学过一些插件但是一段时间不用就很容易忘记,重新看视频又太费功夫。以后学习插件详细的记录笔记以供日后复习使用。

1. Dotween简介

1.1 使用步骤

1.引用DG.Tweening命名空间
2.获取对应组件
3.Do方法决定动画。
4.Set设置动画
5.On设置动画事件

1.2 术语

Tweener
接收DOTween动画信息。
Sequence
动画执行队列。
Tween
表示Tweener和Sequence的通用词,全局操作动画。
Nested tween
Sequence中包含的补间。

1.3 DOTween相关

官方文档
视频教程1
视频教程2

动画曲线
在这里插入图片描述

2. 代码示例

1.基本使用

    public Transform cube1, cube2, cube3, cube4;
    // Start is called before the first frame update
    void Start()
    {
        //DOMove 移动到指定位置
        cube1.DOMove(new Vector3(0, 2, 0), 1.0f);
        //From 从指定位置位移到现在的位置
        cube1.DOMove(new Vector3(0, 2, 0), 1.0f).From();
        //SetRelative 对当前位置进行相对位移,Vector3为位移量
        cube1.DOMove(new Vector3(0, 2, 0), 1.0f).SetRelative();
        //SetDelay 延迟(秒)调用
        cube1.DOMove(new Vector3(0, 2, 0), 1.0f).SetDelay(5.0f);
        //旋转到指定角度;SetLoops第一个参数为循环次数,-1为一直循环(euler);SetEase设置动画曲线
        cube2.DORotate(new Vector3(0, 180, 0), 1.0f).SetLoops(-1,LoopType.Incremental).SetEase(Ease.Linear);
        //缩放到指定大小
        cube3.DOScale(Vector3.zero, 1.0f);
        //颜色变换,要获得MeshRenderer,直接获取Material没效果
        cube4.GetComponent<MeshRenderer>().material.DOColor(Color.red, 1.0f).SetLoops(-1, LoopType.Yoyo);
        //OnSart 动画开始时执行,如果delay需delay结束;OnComplete 动画结束时执行
        cube1.DOMove(new Vector3(0, 2, 0), 1.0f).OnStart(() => Debug.Log("Start"));
        cube1.DOMove(new Vector3(0, 2, 0), 1.0f).OnComplete(Complete);
    }
    void Complete()
    {
        Debug.Log("Complete");
    }

2.文本和UI

public Image fadeImg;
    public Text text;
    public Image fillAmount;
    public Slider slider;
    string scramable = new string(new char[] { 'x', 'x', 'x' });
    void Start()
    {
        //调整透明度
        fadeImg.DOFade(0, 1.0f);
        //逐个显示,会覆盖text上原本内容
        text.DOText("abcd", 4f);
        //逐个显示,加上SetRelative不会覆盖原本内容,会在原本内容之后显示
        text.DOText("abcd", 4f).SetRelative();
        //第三参数为是否支持富文本,第四参数为乱码效果,第五参数为用户自定义乱码,记得要把第四参数设置为Custom
        text.DOText("<color='blue'>abcd</color>", 4f, true, ScrambleMode.Custom, scramable).SetDelay(2.0f);
        //fill效果
        fillAmount.DOFillAmount(0, 2f);
        //控制slide的value,注意UI的初始值
        slider.DOValue(1, 2f);
    }

3.移动UI

    public Transform image;
    void Start()
    {
        //UI运动会无视锚点,默认中心原点
        image.DOLocalMove(new Vector3(10, 10), 2.0f);
        //相对于锚点位移
        image.GetComponent<RectTransform>().DOAnchorPos(new Vector2(10, 10), 2.0f);
    }

4.跟随目标

    //跟随目标
    public Transform target;
    //记录上一次的目标位置
    Vector3 lastTarget;
    //接收操作动画
    Tweener tweener;
    void Start()
    {
        //设为true无视TimeScale的影响
        tweener.SetUpdate(true);
        //设置运动目标点和运动时间,并用tweener接收,注意设置SetAutoKill为false
        tweener = transform.DOMove(target.position, 2.0f).SetAutoKill(false);
        //初始化lastTarget
        lastTarget = target.position;
    }

    void Update()
    {
        //跟随目标点,ChangeEndValue第二个参数snapStartValue不设置为true跟随物体会恢复到初始位置,snapStartValue起到从当前位置开始的作用,Restart执行
        if (lastTarget != target.position)
        {
            tweener.ChangeEndValue(target.position,true).Restart();
            lastTarget = target.position;
        }
    }

5.控制DOTween动画播放、重新播放、继续播放和倒放

    public Transform m_Transform;
    Tweener t1;

    void Start()
    {
        t1 = m_Transform.DOScale(Vector3.zero, 2.0f).Pause().SetAutoKill(false);
    }

    void Play()
    {
        //开始播放(一次)
        t1.Play();
        //继续播放(多次)
        t1.PlayForward();
    }

    void Back()
    {
        //重新开始
        t1.Restart();
        //倒放(多次)
        t1.PlayBackwards();
    }
    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.B))
            Back();
        if (Input.GetKeyDown(KeyCode.P))
            Play();
    }

6.Sequence使用

public Image imageA;
    public Image imageB;
    Sequence sequence = DOTween.Sequence();

    void Start()
    {
        Tweener tweener = imageA.GetComponent<RectTransform>().DOAnchorPos(new Vector3(0, 2, 0), 1.0f);
        //向队列中添加动画,可以传入tweener
        sequence.Append(tweener);
        //等待时间后再执行下个动画
        sequence.AppendInterval(2.0f);
        sequence.Append(imageB.GetComponent<RectTransform>().DOAnchorPos(new Vector3(0, 2, 0), 1.0f));
        sequence.Append(imageA.GetComponent<RectTransform>().DOScale(new Vector3(0, 2, 0), 1.0f));
        //无视队列在最前面添加等待时长
        sequence.PrependInterval(2.0f);
        //无视队列在最前面添加动画
        sequence.Prepend(imageB.GetComponent<RectTransform>().DOAnchorPos(new Vector3(0, 2, 0), 1.0f));
        //sequence中所有其他动画播放完毕将执行下面方法
        sequence.AppendCallback(() =>
        {
            transform.gameObject.SetActive(false);
        });
    }

7.镜头颤动

public Camera m_Camera;
    
    void Start()
    {
        //镜头颤动
        m_Camera.DOShakePosition(2.0F);
    }

8.改变值

    float myValue;
    void Start()
    {
    	// 第一个参数为初始值,第二个是要设置的值 ,第三个参数为目标值,第四个参数为时间
        DOTween.To(() => myValue, x => myValue = x, 100, 1);
        
		//如下面例子就是在1s时间内把localPosition的x平滑过渡到-580
        DOTween.To(() => localPosition, x => localPosition = x, new Vector3(-580, localPosition.y, localPosition.z), 1);
    }

3.可视化操作(可用脚本控制)

1.DOTweenAnimation
2.DOTweenPath

以上为部分常用功能,详细功能介绍请看官方文档。

4 注意事项(坑)

1.我利用sequence制作了选中道具格子显示道具名称的动画,道具格子预制体上挂载的这个动画脚本,结果发现所有生成的预制体虽然脚本挂载在不同的物体上,但是sequence好像是共用的一个。最后在脚本的Disable函数中添加Rewind()解决的。
2.勾选loop后如果想每播放一次就执行方法话的可以放到OnStep中。
在这里插入图片描述

3.如果想实现循环并且每次循环都有延迟时间,那么就不能直接使用loop,因为除了第一次会执行delayTime其余都会忽略延迟时间,比较简单的解决办法就是在OnComplete里执行DoRestart。如下图。
在这里插入图片描述
4.Dotween不仅可以操控自身动画,还可以操控其他物体,我们只要选中下图中的self就可以切换模式了。记住要把Use As Tween Target取消勾选,不然有可能不能正常播放。
在这里插入图片描述
在这里插入图片描述
5.DotweenAnimation组件的Move相关会强制锁定位置,所以当物体需要重复播放动画并且位置需要变动的话不要使用组件形式的动画,需要写在代码中。
6.DOTween autoplay需要取消autokill来触发Restart。
7.如果DotweenAnimation想要不受TimeScale影响的话挂载组件可以通过勾选IgnoreTimeScale设置,代码使用SetUpdate(true)。
在这里插入图片描述

  • 4
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Unity DoTween是一个非常流行的Unity插件,用于实现动画的创建和管理。它可用于在Unity中创建各种不同类型的动画效果,包括2D和3D动画。 要下载DoTween插件,首先需要打开Unity编辑器。然后,可以在Unity Asset Store中搜索DoTween插件。找到插件后,点击打开并查看插件的详细信息。 在插件详细信息页面,可以找到"Add to My Assets"或"Download"按钮,点击按钮后会自动开始下载插件的压缩文件。 下载完成后,可以回到Unity编辑器,点击"Assets"菜单,然后选择"Import Package",再选择"Custom Package"。在弹出的对话框中选择刚刚下载的插件文件,点击"Open"开始导入插件。 导入完成后,可以在Unity的Project视图中看到导入的插件文件。将插件文件拖放到所需的Unity场景或预制件中,并使用DoTween提供的脚本和组件创建和管理动画效果。 总之,要下载Unity DoTween插件,首先需要在Unity Asset Store中找到并下载插件的压缩文件,然后在Unity编辑器中导入插件并使用它来创建和管理动画效果。 ### 回答2: 要下载Unity DoTween插件,你可以按照以下步骤操作: 1. 打开您的Unity编辑器。 2. 在Unity的Asset Store窗口中搜索“DoTween”或直接在Google搜索引擎中搜索“Unity DoTween插件”。 3. 在搜索结果中找到DoTween插件,并确保您选择了适用于您的Unity版本的最新版本。 4. 点击下载按钮以开始下载插件。 5. 在下载完成后,将文件导入到您的Unity项目中。您可以通过双击下载的插件文件(通常是一个.unitypackage文件)或通过选择“Assets”->“Import Package”->“Custom Package”来导入插件。 6. 在导入插件时,可以选择导入的资源。根据您的需求选择相应的设置并单击确定。 7. 导入完成后,您可以在Unity的“Assets”文件夹中看到新添加的DoTween文件夹。您可以在其中找到DoTween的示例脚本、样本场景等。 8. 现在,您可以开始在您的项目中使用DoTween插件了。您可以参考DoTween的文档、示例代码或在线教程,学习如何使用DoTween来创建动画效果、过渡动作等。 通过按照以上步骤,您就可以成功下载并开始使用Unity DoTween插件了。请记住,确保您的Unity版本与所下载的插件版本兼容,以避免出现任何兼容性问题。 ### 回答3: Unity DOTween(即插值动画引擎)是Unity引擎的一个插件,用于在Unity项目中创建和实现各种类型的动画效果。DOTween能够以一种简单、直观和高效的方式帮助游戏开发者创建动画,无论是在2D还是3D环境中。 要下载Unity DOTween插件,可以按照以下步骤进行操作: 1. 首先,打开Unity引擎,并进入Unity Asset Store。Asset Store是Unity提供的一个在线资源商店,供开发者下载和购买各种类型的资源,包括插件、模型、纹理等。 2. 在Asset Store的搜索栏中输入“DOTween”,点击搜索按钮,将会显示出与DOTween相关的结果。 3. 找到Unity DOTween插件,并点击它的页面。在页面中,您将能够看到插件的详细介绍、版本信息、价格等。 4. 如果插件是免费的,则可以直接点击“下载”按钮,将插件下载到您的Unity项目中。 5. 如果插件是付费的,则需要按照网页上显示的价格进行购买。点击“购买”按钮后,会有相应的支付选项和步骤。 6. 完成支付后,插件将会开始下载。下载完成后,您可以在Unity的Package Manager或者项目文件夹中找到并导入插件。 7. 导入插件后,您就可以在Unity中使用DOTween来创建动画效果了。 Unity DOTween插件的下载流程通常是相对简单的,只需要打开Asset Store,并按照界面上的指示进行操作即可。插件的使用方法和示例代码可以在官方文档中找到,帮助您更好地掌握和应用DOTween的功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我寄人间雪满头丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值