欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 培训 > 【Unity2D 2022:C#Script】DoTween插件的使用

【Unity2D 2022:C#Script】DoTween插件的使用

2025/2/27 16:25:51 来源:https://blog.csdn.net/qq_55048532/article/details/145415273  浏览:    关键词:【Unity2D 2022:C#Script】DoTween插件的使用

一、插件介绍

        DOTween 是一个快速高效完全类型安全的 Unity 面向对象的动画引擎,针对 C# 用户进行了优化,免费开源,具有大量高级功能

二、插件的下载

1. DoTween官网:DOTween (HOTween v2)

2. DoTween下载:

        (1)点击DOWNLOAD界面

        (2)点击DownLoad按钮下载

3. DoTween导入:

        (1)解压DoTween压缩包

        (2)将DoTween文件夹拖入Unity的Assets文件夹

三、插件的使用

1. Unity准备

        (1)新建Image游戏物体

        (2)新建Test.cs脚本文件

        (3)为Image游戏物体挂载Test脚本文件

2. DoTween API

        (1)DoTween的静态方法:DOTween.To()(函数重载过多,这里不详细展示形参列表):将某个属性在一定时间内平滑过渡到目标值(这里用图片颜色举例)

using UnityEngine;
using UnityEngine.UI;
using DG.Tweening; // 导入DoTween库public class TestDoTween : MonoBehaviour
{private Image image; // 创建Image对象void Start(){image = GetComponent<Image>(); // 获取Image组件DOTween.To(() => image.color, toColor => image.color = toColor, new Color(0, 0, 0, 0), 2f); // DoTween的静态方法}
}

                 详解:第一个参数:() => image.color是一个lambda表达式,用来获取某个属性。()是一个匿名函数,()内无参数,代表该匿名函数不需要接收参数;image.color是该匿名函数的返回值,因为该匿名函数的函数体内只有一条语句,且该语句是retuen语句,所以同时省略大括号、return和";";第一个参数的完整形式为:() => { return image.color; };第二个参数:toColor => image.color = toColor也是一个lambda表达式,用来改变某个属性的值。toColor是该匿名函数的参数,代表下一帧该值变化到何值,但因为只有一个参数,所以省略参数列表的括号,image=toColor是该匿名函数的函数体的一条语句,因为函数体只有一条语句,所以省略大括号和";",第二个参数的完整形式为:(toColor) => { image.color = toColor; };第三个参数:new Color(0, 0, 0, 0)是一个Color对象,是属性变化的最终值。前三个数是RGB颜色值,(0, 0, 0)代表黑色;第四个数代表透明度alpha,0是全透明,1是不透明;第四个参数:2f是一个浮点数,代表该动画持续的总时间。

        (2)DoTween直接作用于transform组件:transform.LocalMoveX(float distance, float time)、transform.LocalMoveY(float distance, float time)、transform.LocalMoveZ(float distance, float time):将某个游戏物体在一定时间内向指定坐标轴移动到指定值

using UnityEngine;
using UnityEngine.UI;
using DG.Tweening; // 导入DoTween库public class TestDoTween : MonoBehaviour
{void Start(){transform.DOLocalMoveY(10f, 2f); // DoTween直接作用于transform组件}
}

        (3)使用Tween对象接收动画:使用Tween对象接收动画,方便对动画执行各种操作:        tween.PlayForward()、tween.PlayBackwards():动画正播、倒播

using UnityEngine;
using UnityEngine.UI;
using DG.Tweening; // 导入DoTween库public class TestDoTween : MonoBehaviour
{void Start(){Tween tween = transform.DOLocalMoveX(10f, 2f); // 为Tween对象赋值tween.PlayForward(); // 正序播放动画}
}

                 注意:①动画不可以直接倒播,必须先正播再倒播;同时也不能连续正播或者连续倒播。②为Tween赋值也会播放动画,若不想播放动画可以使用tween.Pause()函数暂停播放动画。③tween.Play()方法也是正序播放动画,但只能被调用一次。

        (4)Tween的多次使用:

using UnityEngine;
using UnityEngine.UI;
using DG.Tweening; // 导入DoTween库public class TestDoTween : MonoBehaviour
{void Start(){Tween tween = transform.DOLocalMoveX(10f, 2f); // 为Tween对象赋值tween.Pause(); // 暂停播放tween.SetAutoKill(false); // 设置自动销毁为false}void Update(){if(Input.GetMouseButtonDown(0)) { // 当鼠标左键按下时maskTween.PlayForward(); // 正序播放动画} else if(Input.GetMouseButtonDown(1)) { // 当鼠标右键按下时maskTween.PlayBackwards(); // 倒序播放动画}}
}

                 注意:tween对象初始的AutoKill属性为true,即播放一次后自动销毁该tween对象,需要多次播放时,需要设置SetAutoKill(false)

        (5)Tween的事件回调:用于在动画播放完成后执行其他逻辑

using UnityEngine;
using UnityEngine.UI;
using DG.Tweening; // 导入DoTween库public class TestDoTween : MonoBehaviour
{void Start(){Tween tween = transform.DOLocalMoveX(10f, 2f); // 为Tween对象赋值tween.OnComplete(CompleteMethod); // tween动画播放完毕后调用CompleteMethod()方法}private void CompleteMethod(){DOTween.To(() => maskImage.color, (toColor) => maskImage.color = toColor, new Color(0, 0, 0, 0), 2f);}
}

        (6)Tween的缓动函数:使用不同速率播放动画

using UnityEngine;
using UnityEngine.UI;
using DG.Tweening; // 导入DoTween库public class TestDoTween : MonoBehaviour
{void Start(){Tween tween = transform.DOLocalMoveX(10f, 2f); // 为Tween对象赋值tween.SetEase(Ease.InQuint); // 设置Tween动画的缓动效果}
}

                Tween的所有缓动函数详见:tween的缓动效果大全和使用方法_quadout-CSDN博客

        (7)Tween的循环使用:循环播放动画:tween.SetLoops(-1, LoopType.Incremental)、tween.SetLoops(-1, LoopType.Restart)、tween.SetLoops(-1, LoopType.Yoyo):重复叠加播放、重复正播、重复倒播

using UnityEngine;
using UnityEngine.UI;
using DG.Tweening; // 导入DoTween库public class TestDoTween : MonoBehaviour
{void Start(){Tween tween = transform.DOLocalMoveX(10f, 2f); // 为Tween对象赋值tween.SetLoops(-1, LoopType.Incremental); // 重复叠加播放tween.SetLoops(-1, LoopType.Restart); // 重复正播tween.SetLoops(-1, LoopType.Yoyo); // 重复正播倒播}
}

        本章完。感谢阅读!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词