DoTween动画插件学习
一.简单的变量插值运算
using System.Collections; using System.Collections.Generic; using UnityEngine; using DG.Tweening; public class GetStart : MonoBehaviour { public Vector3 myValue = Vector3.zero; void Start() { //对变量做动画,通过插值去修改值的变化 //变量由0 0 0变化到10 10 10,变化曲线一阶导为正,二阶导为负(即一直增大,增大的速度先快后慢) //参数:返回myValue值,将x(插值运算的中间值)赋值给myValue,插值运算的最终结果,插值运算的时间 DOTween.To(() => myValue,x => myValue = x, new Vector3(10, 10, 10), 2); } }
导包using DG.Tweening;,使用DOTween.To方法进行动画的插值运算
二.简单的动画效果
private void Update() { //每一帧的立方体的位置和插值运算的结果保持一致 cubeTransform.position = myValue; }
公开一个transform,新建一个立方体拖动到脚本上赋值,在update函数中使每一帧的立方体的位置和插值运算结果保持一致
三.动画的快捷播放方式
public RectTransform panelTransform; public bool isIn = false; public void OnClick() { if (!isIn) { //对transform的拓展方法,实现物体的移动 //参数:移动的目标位置,移动的时间 //panelTransform.DOMove(Vector3.zero, 1); Tweener tweener = panelTransform.DOLocalMove(Vector3.zero, 1f);//默认动画会被销毁 //动画的对象为Tweener类型的对象,接收这个对象,并将自动销毁的属性设置为false tweener.SetAutoKill(false); isIn = true; } else { //动画未销毁则可以倒放动画 panelTransform.DOPlayBackwards(); isIn = false; } }
通过拓展Unity原来API中的类的方法实现动画的快捷播放,这里将panel从屏幕外移动到屏幕中央,两个动画播放方法分别对应世界坐标和本地坐标
public RectTransform panelTransform; public bool isIn = false; private void Start() { //在start里创建并保存一个动画 Tweener tweener = panelTransform.DOLocalMove(Vector3.zero, 1f);//默认动画会被销毁 tweener.SetAutoKill(false); //暂停动画的播放 tweener.Pause(); } public void OnClick() { if (!isIn) { //动画播放,DOPlay方法只会播放一次 //panelTransform.DOPlay(); //动画前放,DOPlayForward方法可以多次播放和回放动画 panelTransform.DOPlayForward(); isIn = true; } else { //倒放动画,DOPlayBackwards方法和DOPlayForward方法是一对方法 panelTransform.DOPlayBackwards(); isIn = false; } }
可以现在start中创建好动画,再在合适的时候进行任意次的播放和倒放
四.from方法
通过在动画方法后点上from方法可以实现从目标位置到当前位置播放动画
public RectTransform panelTransform; public void OnClick() { //不加from表示从当前位置运动到up位置,加上from表示从up位置运动到当前位置 //panelTransform.DOLocalMove(Vector3.up, 4).From(); //可以在from中添加一个bool值的参数,表示这个运动目标位置是否是相对位置,不填写默认为false也就是绝对位置 panelTransform.DOLocalMove(Vector3.up, 4).From(true); }
五.动画的一些设置
动画创建后返回值为tweener对象,调整这个对象的参数即可对动画进行设置(前面已经设置过动画是否自动销毁)
//设置动画曲线,Ease是枚举类型,枚举了内置的各种动画曲线 tweener.SetEase(Ease.InSine); //设置动画播放的次数 tweener.SetLoops(2); //设置动画完成后调用的方法,OnTweenComplete是动画结束后调用的方法的方法名,不用引号 tweener.OnComplete(OnTweenComplete);
六.可视化动画组件DOTween Animation
可以方便地管理动画类型、动画曲线和生命周期(Events)等
七.可视化路径编辑器组件DOTween Path
设置路径,控制游戏对象按照路径运动
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!