【Unity 工具,简单学习】DoTween,脚本控制动画工具
创始人
2024-06-02 20:09:00
0

DOTween:脚本控制动画工具

  • 简单介绍
  • 安装
  • 简单使用
    • eg.1 简单移动,跳动
    • eg2. 缓动 Easing(动画插值)
    • eg3. 循环 Looping
    • eg4. 变换颜色,变换大小
    • eg5. 动画回调 Ani Callback
    • eg6. 文字变换
    • 其他一些提一嘴的功能
  • DOTween Sequence 序列
  • 其他一些控制方法
  • 配合协程 Coroutine

简单介绍

  • 连接
    什么是Tween Engine —— 作者的blog(英文)
  • 它能做什么?
    在这里插入图片描述
DOTween is a fast, efficient, fully type-safe object-oriented animation engine, 
optimized for C# 
(it is also the evolution of HOTween, author's previous Unity tween engine).
  • 简单来说,就是用简单的代码可以控制任何动画表现,诸如移动、旋转、颜色、各种其他UI元素

安装

  • 导入包后,提示需要导入新版本的DOTween
    在这里插入图片描述
    然后点击 set up
    在这里插入图片描述
    再 apply
    在这里插入图片描述
  • 然后再打开一下面板点击 Get Started 查看该教程
    在这里插入图片描述

简单使用

eg.1 简单移动,跳动

  • 编写测试脚本
    注意需要引入头文件 using DG.Tweening
    使用 transform.DOMove(vec3,duration) ,在该时间内移动到某个位置
    DOMoveX 移动X坐标到某位置
    DOJump,跳动到某位置
    在这里插入图片描述
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening;
public class TestDOWeen : MonoBehaviour
{public int test_type = 0;void Start(){switch (test_type){case 0:transform.DOMove(new Vector3(1, 2, 3), 4);break;case 1:transform.DOMoveX(3, 3);break;case 2:transform.DOJump(new Vector3(4, 5, 6), 3, 5, 6);break;}}
}

请添加图片描述

eg2. 缓动 Easing(动画插值)

  • 测试一下线性移动,外二次和内二次。
    各种插值变化图示
case 3:transform.DOMoveZ(10, 5).SetEase(Ease.Linear);break;
case 4:transform.DOMoveZ(10, 5).SetEase(Ease.OutQuad);break;
case 5:transform.DOMoveZ(10, 5).SetEase(Ease.InQuad);break;

请添加图片描述

eg3. 循环 Looping

  • SetLoops 第一个变量表示循环次数,第二个为LoopType枚举类型,可以设置为重新动画,或 yoyo,大概是悠悠球一样再返回的意思?
case 6:transform.DOMoveZ(10, 2).SetLoops(2, LoopType.Restart);break;
case 7:transform.DOMoveZ(10, 2).SetLoops(2, LoopType.Yoyo);break;
case 8:transform.DOMoveZ(10, 2).SetEase(Ease.InQuad).SetLoops(2, LoopType.Yoyo); ;break;
  • 效果不错。
    请添加图片描述

eg4. 变换颜色,变换大小

  • 有一些坑…
    首先,材质需要从 MeshRender 中的 material 获取
    然后,可以使用 DOCOlor 来变换颜色
    注意,Colorrgba 值域均为 [0,1][0,1][0,1],所以使用前需要归一化!
case 9:Material mat = GetComponent().material;mat.DOColor(Color.red, 5);break;
case 10:Material mat2 = GetComponent().material;mat2.DOColor(new Color(100.0f / 255, 100.0f / 255, 100.0f / 255), 5);break;
case 11:transform.DOScale(new Vector3(2, 2, 2), 5);break;

请添加图片描述

eg5. 动画回调 Ani Callback

  • 我希望在播放动画的某个过程中运行某个函数,可以使用回调
    首先需要在一开始时获取 Tweener 实例,然后调用合适的回调函数即可
  • 看一下,有 onComplete 完成时回调
    OnKill 杀死 twe时回调
    OnPause 暂停时回调
    OnPlay 每次播放时回调
    OnStart 第一次开始播放时回调
    OnUpdate 没帧播放时回调
    OnStepComplete 每步播放结束时回调(loop一次算一步)
    等等……
    在这里插入图片描述
case 12:Tweener twe = transform.DOScale(new Vector3(2, 2, 2), 3);twe.OnComplete(ChangeColor);break;/** Blablabla */private void ChangeColor(){Material mat = GetComponent().material;mat.DOColor(Color.red, 3);}
  • 这里先变大,然后回调函数,再变色。
    请添加图片描述

eg6. 文字变换

  • 我希望它能按时间,逐字符播放文本
    之前傻傻敲了一堆代码,现在直接两行搞定(哭)
    直接宣布好用到爆。(一开始默认文本可以清除下)
case 13:Text text = GetComponent();text.DOText("Hello World, this is a message sent by the computer.", 3);break;

请添加图片描述

其他一些提一嘴的功能

  • 具体调用方法看文档或者vsCode中的代码补全吧。
    transform.DOShakePosition() 振动,放在摄像机上甚至可以模拟画面振动效果
    transform.DOPath() 沿着路径移动,路径为给定的vector3的数组
    DoRotate() 旋转
    DoLookAt() 朝向移动
    DoFade() 消失
    DoPunchPosition/Rotation/Scale() 类似给你一拳(?)逐渐能量减少的感觉。
    请添加图片描述

DOTween Sequence 序列

  • Sequence 就像是控制其他 Tweenes 的 Tweener.
    首先通过创建一个 Sequence(注意没有用new),然后通过 Append 添加其 Tween
    这里的 Prepend 表示将 Tween 添加到序列的开头
    这里的 Join 表示将上个添加的 Tween 和该 Tweener 同时播放
case 15:Sequence seq = DOTween.Sequence();seq.Append(transform.DOMoveY(3, 2));seq.Append(transform.DOMoveZ(3, 2));seq.Prepend(transform.DOMoveX(3, 2));seq.Join(transform.DOMoveZ(10, 2));break;

所以播放效果如下
请添加图片描述

  • 还可以 Insert(p,tween) 来将 Tween 设定在时间 p 播放,而不是如上按顺序播放,这样可以允许重叠播放。
    还可以 InsertInterval(p) 表示这 p 秒不播放。放在开头 PrependInterval 就意味着动画延后p秒开始播放
    还可以对应 AppendCallback/InsertCallback/PrependCallback(),添加回调。
  • 所以我们发现了,我们完全可以把 Sequence 当做一个计时器来用!
    注意,Sequence要求非空,可以只包含回调。

其他一些控制方法

  • 可以使用 Play()Pause() 等方法来控制 tween 的播放
    可以通过静态方法、tween直接控制、ref中直接控制。
    在这里插入图片描述

配合协程 Coroutine

  • 比较好懂,你可以用它的Sequence;也可以配合协程,yield return tween.xxxMethod()。
    在这里插入图片描述

相关内容

热门资讯

王者定位怎么关安卓系统,轻松实... 你是不是也和我一样,对王者荣耀这款游戏爱得深沉呢?不过,有时候游戏里的设置让人头疼,比如安卓系统的王...
树莓派安卓系统流畅,打造便携式... 亲爱的读者们,你是否曾想过,将树莓派与安卓系统结合,会擦出怎样的火花呢?今天,就让我带你一起探索这个...
安卓系统智能机顶盒,引领家庭娱... 你有没有想过,家里的电视也能变得智能起来?没错,就是那个陪伴我们多年的老电视,现在也能摇身一变,成为...
安卓系统很差了吗现在,性能优劣... 最近是不是有不少朋友在讨论安卓系统的问题呢?有人说它越来越差了,也有人觉得它还是那个熟悉的“老朋友”...
安卓系统uc安装包,Andro... 你有没有发现,手机里的安卓系统越来越强大了?今天,咱们就来聊聊这个话题——安卓系统中的UC安装包。你...
安卓系统谷歌能删吗,谷歌能否删... 你有没有想过,那个一直陪伴你手机生活的安卓系统,它背后的谷歌爸爸,是不是也能被你随意删掉呢?这可不是...
安卓系统会不会更耗电,解析其功... 你有没有发现,手机用着用着,电池就有点不给力了?尤其是那些用安卓系统的手机,有时候感觉电就像流水一样...
安卓系统中无效目录,安卓系统无... 你有没有遇到过在安卓系统中,明明文件夹就在那里,但是就是找不到的情况?别急,今天就来给你揭秘安卓系统...
国产安卓机哪个系统好用,探寻最... 你有没有想过,国产安卓机哪个系统最好用呢?这可是个让人纠结的问题,毕竟每个系统都有它的特色和亮点。今...
安卓系统cpua9,引领性能与... 你有没有发现,最近你的安卓手机运行得是不是比以前顺畅多了?这可多亏了那个强大的安卓系统CPUA9啊!...
安卓系统usb驱动程序,功能、... 你有没有遇到过这种情况:手机里存了那么多宝贝照片和视频,想传输到电脑上保存,结果电脑却像个小顽皮,死...
安卓操作系统怎么关闭,轻松关闭... 手机里的安卓操作系统是不是有时候让你觉得有点儿烦呢?别急,今天就来手把手教你如何轻松关闭安卓操作系统...
追星手机壳推荐安卓系统,盘点热... 你有没有发现,现在追星族们对手机壳的热爱简直到了疯狂的地步?没错,就是那种能让你一秒变身偶像迷妹的手...
ios系统用安卓系统游戏下载软... 你有没有想过,明明是iOS系统的手机,却想玩安卓系统的游戏?这可不是什么天方夜谭,现在就有这么神奇的...
安卓高系统怎么用美化,打造专属... 亲爱的安卓用户们,你是不是也和我一样,对手机系统美化情有独钟呢?想要让你的安卓手机焕然一新,变得个性...
安卓系统怎么开夜间模式,安卓系... 亲爱的手机控们,你是不是在夜晚使用安卓手机时,眼睛感到有些不适?别担心,今天我要给你揭秘一个超级实用...
王者安卓系统用苹果人脸,一场视... 你知道吗?最近在手机圈里可是掀起了一股不小的波澜呢!那就是王者安卓系统竟然用上了苹果人脸识别技术!是...
安卓444怎么升级系统,轻松迈... 你那安卓444的小家伙是不是已经有点儿落伍了?别急,今天就来给你详细说说怎么给它来个系统升级,让它焕...
安卓系统raw修图软件,探索安... 你有没有发现,手机拍照越来越方便了,但有时候拍出来的照片还是不够完美呢?别急,今天就来给你安利几款安...
安卓系统的王者切换苹果,从安卓... 你知道吗?最近身边的朋友圈里掀起了一股热潮,那就是安卓系统的王者们纷纷切换到苹果阵营。这可真是让人大...