[Unity 3D] DOTween 常用函数

2023-11-17

DOTween官方文档:http://dotween.demigiant.com/documentation.php

一、控制变量

1. DOTween.To()

  1. static DOTween.To(getter, setter, to, float duration)

这个函数使用了Lambda表达式,主要功能为:给变量a添加一个动画,让它从默认值1在2秒内变化到5。

变量类型可以为int、Vector3、Color等等,但是要确保与目标类型相同。

using UnityEngine;
using DG.Tweening;  // 引入命名空间

public class Test01 : MonoBehaviour {

    public float a = 1;

    void Start () {
        DOTween.To(() => a, x => a = x, 5, 2);
    }
}

 

二、 控制物体(Transform)

1. 位置动画(Move)

to:目标位置/值,duration:持续时间,snapping:只取整数值(默认为false)

  1. DOMove(Vector3 to, float duration, bool snapping)    // 全局坐标移动
  2. DOMoveX/DOMoveY/DOMoveZ(float to, float duration, bool snapping)
  3. DOLocalMove(Vector3 to, float duration, bool snapping)    // 本地坐标移动
  4. DOLocalMoveX/DOLocalMoveY/DOLocalMoveZ(float to, float duration, bool snapping)
using UnityEngine;
using DG.Tweening;  // 引入命名空间

public class Move : MonoBehaviour {
    void Start () {
        transform.DOMove(new Vector3(10, 10, 10), 5, true);
    }
}

2.旋转动画(Rotate)

to:目标值,duration:持续时间,mode:旋转模式(默认为RotateMode.Fast)

  1. DORotate(Vector3 to, float duration, RotateMode mode)
  2. DORotateQuaternion(Quaternion to, float duration)
  3. DOLocalRotate(Vector3 to, float duration, RotateMode mode)
  4. DOLocalRotateQuaternion(Quaternion to, float duration)
using UnityEngine;
using DG.Tweening;  // 引入命名空间

public class Rotate : MonoBehaviour {
    void Start() {
        transform.DORotate(new Vector3(0, 0, 360), 5);
    }
}

3.缩放动画(Scale)

to:目标值,duration:持续时间

  1. DOScale(float/Vector3 to, float duration)
  2. DOScaleX/DOScaleY/DOScaleZ(float to, float duration)
using UnityEngine;
using DG.Tweening;  // 引入命名空间

public class Scale: MonoBehaviour {
    void Start() {
        transform.DOScale(2, 5);
    }
}

4.跳跃动画(Jump)

endValue:结束位置,jumpPower:跳跃的最大高度,numJumps:跳跃次数,jumpPower:持续时间,snapping:只取整数值(默认为false)

  1. DOJump(Vector3 endValue, float jumpPower, int numJumps, float jumpPower, bool snapping)
  2. DOLocalJump(Vector3 endValue, float jumpPower, int numJumps, float duration, bool snapping)
using UnityEngine;
using DG.Tweening;  // 引入命名空间

public class Rotate : MonoBehaviour {
    void Start() {
        transform.DOJump(new Vector3(2, 2, 2), 4, 4, 5);
    }
}

5.击打动画(Punch)

punch:晃动幅度,duration:持续时间,vibrato:晃动的次数(默认为10),elasticity:弹性系数(默认为1),snapping:只取整数值(默认为false)

  1. DOPunchPosition(Vector3 punch, float duration, int vibrato, float elasticity, bool snapping)
  2. DOPunchRotation(Vector3 punch, float duration, int vibrato, float elasticity)
  3. DOPunchScale(Vector3 punch, float duration, int vibrato, float elasticity)
using UnityEngine;
using DG.Tweening;  // 引入命名空间

public class Rotate : MonoBehaviour {
    void Start() {
        transform.DOPunchPosition(new Vector3(2, 2, 2), 5);
    }
}

6. 摇晃动画(Shake)

duration:持续时间,strength:晃动幅度(默认为float:1),vibrato:晃动的次数(默认为10),randomness:随机晃动角度(0-180,默认为90),snapping:只取整数值(默认为false),fadeOut:渐出效果(默认为true)

  1. DOShakePosition(float duration, float/Vector3 strength, int vibrato, float randomness, bool snapping, bool fadeOut)
  2. DOShakeRotation(float duration, float/Vector3 strength, int vibrato, float randomness, bool fadeOut)
  3. DOShakeScale(float duration, float/Vector3 strength, int vibrato, float randomness, bool fadeOut)
using UnityEngine;
using DG.Tweening;  // 引入命名空间

public class Rotate : MonoBehaviour {
    void Start() {
        transform.DOShakePosition(5);
    }
}

 

三、文字动画(Text)

to:目标颜色/值/文本,duration:持续时长

  1. DOColor(Color to, float duration)
  2. DOFade(float to, float duration)
  3. DOText(string to, float duration, bool richTextEnabled = true, ScrambleMode scrambleMode = ScrambleMode.None, string scrambleChars = null)
using UnityEngine;
using UnityEngine.UI;
using DG.Tweening;  // 引入命名空间

public class Test : MonoBehaviour {

    private Text _text;

    void Start()
    {
        _text = GetComponent<Text>();
        _text.DOText("0123456789", 10);
    }
}

 

四、动画序列(Sequence)

  1. sequence.Append(Tween tween)    // 添加一个动画到序列末尾。
  2. sequence.AppendCallback(TweenCallback callback)    // 添加回调函数到序列末尾。
  3. sequence.AppendInterval(float interval)    //  添加一段空时间到序列末尾。
  4. sequence.Insert(float atPosition, Tween tween)    // 插入一段动画到指定时间。
  5. sequence.InsertCallback(float atPosition, TweenCallback callback)    //  插入回调函数到序列指定时间。
  6. sequence.Join(Tween tween)    // 插入动画与序列最后一个动画(这里的最后是指最后加入序列而非序列末尾)同时播放。
  7. sequence.Prepend(Tween tween)    // 添加一个动画到序列头部。
  8. sequence.PrependCallback(TweenCallback callback)    // 添加回调函数到序列头部。
  9. sequence.PrependInterval(float interval)    //  添加一段空时间到序列头部。
using UnityEngine;
using DG.Tweening;  // 引入命名空间

public class Shake : MonoBehaviour
{

    private Sequence sequence;

    void Start()
    {
        sequence = DOTween.Sequence();
        Tween tween1 = transform.DOMove(new Vector3(2, 2, 2), 2);
        Tween tween2 = transform.DORotate(new Vector3(45, 45, 45),2);
        Tween tween3 = transform.DOShakePosition(2);

        sequence.Append(tween1);
        sequence.Join(tween2);
        sequence.AppendInterval(1);
        sequence.Append(tween3);
    }
}

 

五、动画设置

1、全局

  1. DOTween.defaultAutoKill    //  (全局) 当该值为真时,之后创建的动画当其播放完毕之后会自动被销毁。
  2. DOTween.defaultAutoPlay    //  (全局) 当该值为真时,之后创建的动画会自动播放。
  3. DOTween.defaultEaseType    //  (全局) 该值为创建动画时候默认的动画曲线。
  4. DOTween.defaultLoopType    //  (全局) 该值为创建动画时候默认的循环模式。

2、局部

  1. tweener.SetAs(Tween tween \ TweenParams tweenParams)    // 设置该动画相关属性。
  2. tweener.SetAutoKill(bool autoKillOnCompletion = true)    // 设置该动画是否自动销毁。
  3. tweener.SetEase(Ease easeType \ AnimationCurve animCurve \ EaseFunction customEase)    // 设置缓动参数,实现不同的动画效果。
  4. tweener.SetId(object id)    // 设置该动画的id。
  5. tweener.SetLoops(int loops, LoopType loopType = LoopType.Restart)    // 设置该动画循环次数和循环类型,次数为-1表示无限循环。
  6. tweener.SetRecyclable(bool recyclable)    // 设置动画为可回收,可循环使用的。
  7. tweener.SetRelative(bool isRelative = true)    // 设置动画为相对的。
  8. tweener.SetUpdate(UpdateType updateType, bool isIndependentUpdate = false)    // 设置动画是否忽略TimeScale。

 

六、动画操作

  1. tweener.From()    // 参数为true或者false。表示运动为相对运动还是绝对运动。并且动画效果为tweener的逆动画
  2. tweener.Pause()    // 动画播放暂停。
  3. tweener.Play()    // 动画继续播放。
  4. tweener.Flip()    // 动画播放中执行,动画原轨迹运动到起始点,当动画回到起始状态时动画结束。
  5. tweener.Complete()    // 动画播放中执行,物体立即运动到动画末尾状态,动画结束。
  6. tweener.Goto()    // 参数为float,表示动画立即进入到时间为t时候的状态。
  7. tweener.PlayForward()    // 动画顺序播放。
  8. tweener.PlayBackwards()    // 动画倒序播放。
  9. tweener.TogglePause()    // 顺序/倒序播放。该方法会自动识别物体当前状态,如果在起始点就顺序,否则就逆序
  10. tweener.ReStart()    // 动画重新开始播放。
  11. tweener.Kill()    // 立即销毁该动画。
using UnityEngine;
using DG.Tweening;  // 引入命名空间

public class Shake : MonoBehaviour {

    private Tweener tweener;

    void Start() {
        tweener = transform.DOShakePosition(2);
        tweener.Pause();
        tweener.SetAutoKill(false);
    }

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            tweener.Restart();
        }
    }
}

 

七、回调函数

  1. tweener.OnComplete()    // 动画结束时触发。
  2. tweener.OnKill()    // 动画被销毁时触发。
  3. tweener.OnPlay()    // 动画开始播放时触发。
  4. tweener.OnPause()    // 动画暂停播放时触发。
  5. tweener.OnRewind()    // 动画倒转播放时触发。
  6. tweener.OnStart()    // 动画被创建时触发。
  7. tweener.OnStepComplete()    // 单个动画循环结束时触发。
  8. tweener.OnUpdate()    // 动画更新时触发。
using UnityEngine;
using DG.Tweening;  // 引入命名空间

public class Shake : MonoBehaviour
{

    private Tweener tweener;

    void Start()
    {
        tweener = transform.DOShakePosition(2);
        tweener.OnStart(OnStart);    // 使用回调函数
        tweener.OnUpdate(() => Debug.Log("OnUpdate"));    // 使用回调函数+匿名函数
        tweener.onComplete += OnComplete;    // 使用内部的委托
        tweener.OnKill(() => OnKill("OnKill"));    // 传递参数需要使用Lambda表达式
    }

    void OnStart()
    {
        Debug.Log("OnStart");
    }

    void OnComplete()
    {
        Debug.Log("OnComplete");
    }

    void OnKill(string param)
    {
        Debug.Log(param);
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[Unity 3D] DOTween 常用函数 的相关文章

  • Unity获取Android安卓主页Home键和Back返回键

    如博文无法正常显示 请访问原文地址 https blog csdn net ChinarCSDN article details 82941592 Unity获取安卓键位 本文提供全流程 中文翻译 Chinar 坚持将简单的生活方式 带给世
  • 【Unity 3D】VR飞机拆装后零件说明功能案例实战(附源码和演示视频 超详细)

    需要源码和资源包请点赞关注收藏后评论区留言私信 一 效果演示 如下图所示 飞机拆装后 单击零件 将会出现零件说明功能 看上去十分有科技感和美观 演示视频如下 零件高亮及显示说明 二 实现步骤 首先双击打开Level6 UI场景 接下来的步骤
  • UNITY 编辑器或游戏卡死

    UNITY 编辑器或游戏卡死 检查脚本引用是否有误 定向关闭主要的脚本 找到可能出问题的脚本 检查其Update中有没有陷入死循环的代码 无限协程中While中无内容 2021 9 28 对第三点不知道该怎么总结 情况描述大致为 While
  • 【Unity 3D】图形界面GUI的讲解及在C#中实现用户登录界面的实战(附源码)

    需要源码请点赞关注收藏后评论区留言并且私信 在游戏开发过程中 游戏界面占据了非常重要的地位 玩家启动游戏的时候 首先看到的就是游戏的UI 其中包含图片 按钮和高级控件等等 UGUI和GUI是Unity 3D中最常用的两个UI系统 一 GUI
  • Unity 3D 博客汇总

    附录 X4 作业优秀博客汇总 目录 文章目录 附录 X4 作业优秀博客汇总 1 最有价值个人博客 Valuable Person Blogs 2 博客表达技巧与游戏创新 2 1 写读者欢迎的游戏博客 2 2 师兄师姐谈游戏创新 竞赛经验谈
  • [Unity 3d] 修改从asset store上下载的package的地址

    2020 9 16补充更新 在转移sims4的mod文件时又遇到这个问题 一直不成功 然后发现忘了要先把原文件转移到目标目录然后把原文件删了 mklink error cannot create a file when that file
  • Unity3D Glow Effect 自发光 颜色溢出效果

    unity自带的image effect中的一个摄像机特效 但它是针对全屏幕渲染的 而且我们要明确一点 只需你知道我们场景中的GameObject的材质shader通过alpha通道进行控制这个光晕的 也就是说将alpha变成0那么将是原来
  • unity3d Object.Destroy 销毁

    static function Destroy obj Object t float 0 0F void Description描述 删除一个游戏物体 组件或者资源 物体obj现在被销毁或在指定了t时间过后销毁 如果obj是组件 它将从Ga
  • 【Unity 3D】VR飞机动态拆装及引擎开关控制案例(附源码和演示视频 超详细)

    需要源码和资源包请点赞关注收藏后评论区留言私信 上一篇博客介绍了如何搭建飞机场景 制作了飞机引擎开启喷射火焰 并且让飞机起飞了参考链接如下 飞机场景搭建 一 效果展示 其中按空格可以控制后部引擎开关 即喷火和不喷火 演示视频如下 拆装飞机控
  • 用unity制作简单的AR,亲测有效

    在File Build Settings打开Build Settings面板 platform里面选择Android 然后点击Player Settings在右侧的Inspector面板下面打开XR Setting把里面的Vuforia A
  • Unity3D 移动物体方式总结

    简述 在Unity 3D中很多时候我们会想要移动一个物体到别的位置 如让想人物跑动起来 或者想要移动相机来跟随人物 有很多种方法可以改变物体的坐标 实现移动的目的 移动的本质是在每一帧中修改物体的position 在这里把之前使用过的移动物
  • Unity Notes之控制粒子系统的最大粒子数量

    Unity中的粒子系统使用起来还是比较方便的 不过在实际过程中遇到这样的一个问题 需要动态的来控制一个粒子系统组件所能产生的最大粒子数 看doc上说是有maxParticles来控制 但实际上却没有这个开放的参数 只能通过其它的方式来实现
  • [Dotween] 介绍与使用,和坑

    Dotween 是在unity里实现各种动画效果 比如 位移 transform DoMove 旋转 transform DoRotation 缩放 transform DoScale 颜色改变 image DoColor 延时调用 Dov
  • unity3d asset store 的资源下载到本地的目录

    之前一直不知道unity3d asset stored额资源下载在本地什么目录的 也不知道是不是我用的破解版的原因 下载的资源有一部分导入不成功 包解压错误的消息 我确定是没有中文目录 但是一直无解 本地目录也找不到 照成我长期没办法用as
  • Unity 3D协程

    Unity3D 是单线程的 StartCoroutine 开启协程 Coroutine StartCoroutine IEnumerator routine Coroutine StartCoroutine string methodNam
  • Unity Fixed Joint 固定关节组件详解

    Chinar blog www chinar xin Unity物理引擎 Fixed Joint 固定关节 本文提供全流程 中文翻译 Chinar 的初衷是将一种简单的生活方式带给世人 使有限时间 具备无限可能 Chinar 心分享 心创新
  • unity3D 脚本中按键或鼠标输入响应函数

    简单地总结一下 unity中脚本实现输入 键盘和鼠标 的响应事件函数 不够完善 以后碰到再慢慢添加 键盘输入 1 Input GetKey up 按住键盘上键 2 Input GetKey KeyCode UpArrow 按住键盘上键 Ke
  • Unity_DoTween_Path路径动画的使用

    using System Collections using System Collections Generic using System Linq using DG Tweening using UnityEngine public c
  • 转 Unity知识点0001(Yanlz+协程+List+MeshRender+对象池+链条关节+PlayerPrefs+脚本生命周期+LOD+)

    https blog csdn net VRunSoftYanlz article details 80302012 Unity知识点0001 Yanlz 协程 List MeshRender 对象池 链条关节 PlayerPrefs 脚本
  • Unity 3D中的帧动画播放

    帧动画 Frame By Frame 的原理 链接 项目实例资源 关键是连续的关键帧分解动作 也就是在时间轴的每帧上逐帧绘制不同的内容 使其连续播放而成动画 虽然每一帧都不一样 处理的信息量大 但是 帧动画具有非常大的灵活性 几乎可以表现任

随机推荐

  • iOS开源系列——OC框架排名列表

    Objective C框架排名 快点我
  • PRD文档范例,产品经理值得收藏的写作手册

    2015年 我写了一篇梳理PRD的文章 PRD到底该怎么写 获得3 5万次阅读 423次收藏 至今已过去5年 在这5年里 我一直从事产品产品相关的工作 也经历过一次完整的创业 对PRD又有了一些新的思考 这篇文章是 PRD怎么写 的升级版
  • 软件测试方法——静态测试与动态测试

    从测试方法的角度可以分为手工测试和自动化测试 1 静态测试 所谓静态测试 static testing 就是不实际运行被测软件 而只是静态地检查程序代码 界面或文档中可能存在的错误的过程 从概念中我们可以知道 其包括对代码测试 界面测试和文
  • Python re.match函数的使用详解

    正则表达式是用于匹配和操作文本的强大工具 在Python中 re模块提供了一组函数来处理正则表达式 其中 re match函数用于尝试从字符串的起始位置匹配一个模式 本文将详细介绍re match函数的使用方法 并提供相应的源代码示例 re
  • MiniDump不生成或者生成0字节

    今天在使用C写一个Windows多线程程序时 发现退出过程中有段错误 为了方便快速的定位问题 我使用了MiniDump MiniDump c源码如下 include
  • 2021年系统集成项目管理工程师(软考中级)连夜整理考前重点

    一 信息与信息化 1 信息论奠基者香农认为 信息就是能够用来消除不确定性的东西 8种状态需要3位比特表示 5位比特则可表示64种状态 信息 物质材料 能源是三大戓略资源 2 信息论两个层次 本体论和认识论 3 信息传输模型 信源 编码 信道
  • Qt鼠标单击与长按

    在Qt中 可以通过重载QWidget的mousePressEvent mouseReleaseEvent 和mouseMoveEvent 等事件来实现对鼠标事件的处理 判断鼠标是长按还是点击 可以通过记录鼠标按下的时间和释放的时间 通过两个
  • 15.DDT+unittest+excel ddt框架结合单元测试

    Excel读取数据的三种方式 1 一次性读取所有的数据 对内存的要求高点 必须掌握 2 需要用的时候读取所有的数据 就是磁盘读写要求高点 磁盘 速度最低 内存 速度中间 CPU 速度最高 3 使用DDT进行参数化 方法一 一次性读取所有的数
  • 缓存相关

    缓存雪崩怎么解决 如果缓存因为某个原因不可用 导致大量请求涌向数据库 可能会导致数据库崩溃 缓存雪崩目前主要有两种方案 1 使用集群 集群部署缓存 当一台宕机时 其他机器仍能提供缓存服务 2 Hystrix 熔断器 起到熔断 降级 限流三个
  • 文章内容无法复制复制不了

    一些文档 什么的复制不了 主要有几种方法 目录 1 禁用js 2 ctrl P打印 3 选中要复制的内容 gt 拖到网址输入框 另外 通过一些浏览器插件 感觉用处不大 1 禁用js 优点 可以直接复制原有段落文字的格式 缺点 有点麻烦 对百
  • 通俗理解三大范式

    关系型数据库中我们用的最多的就是第一范式 1NF 第二范式 2NF 第三范式 3NF 所以需要我们深入理解三大范式 第一范式 1NF 要求数据库的每一列都是不可分割的原子数据项 在上面的表中 家庭信息 和 学校信息 列均不满足原子性的要求
  • Windows下C语言操作硬件设备的方法

    本文作者 Fezl 本文原地址 http blog csdn net u010147522 article details 49912221 之前都是在linux下操作硬件设备 open read write ioctl 相当方便 最近要检
  • jQuery 入门教程(23): jQuery UI Autocomplete示例(一)

    AutoComplete 在获取焦点后 随着用户键入的内容 可以在预订的数据源中查找和已输入的内容相匹配的内容列表供用户选择 这可以用作之前输入过的内容也可以用作自动填充相关内容 比如根据城市名 自动填充邮编等 你可以使用本地数据源或是远程
  • nvm的安装及使用、下载cnpm以及git的配置

    nvm下载 下载图中安装包 下载完了就有这个 双击安装 路劲把C改为D即可 这是直接下载选择好安装路劲之后 没配置的环境变量 配置后的环境变量 1 文件夹设置 2 环境变量配置 查询nvm版本号 nvm常用命令如下 使用nvm下载 node
  • 适合初学者的强化学习教程(1): python使用gym实践和注意事项

    作者 知乎 Ai酱 安装步骤和报错问题 安装 pip install gym 报错 AttributeError module gym envs box2d has no attribute BipedalWalker 这是因为gym没有安
  • C语言for循环必备练习题

    话不多说 直接上题 笔者的一贯要求 速度 1 作业标题 663 关于while 条件表达式 循环体 以下叙述正确的是 假设循环体里面没有break continue return goto等等语句 作业内容 A 循环体的执行次数总是比条件表
  • 构造函数初始化列表

    目录 一 初始化列表 二 初始化列表的使用 三 注意 1 每个成员变量在初始化列表中只能出现一次 初始化只能初始化一次 2 类中包含以下成员 必须放在初始化列表位置进行初始化 3 尽量使用初始化列表初始化 因为不管你是否使用初始化列表 对于
  • ubuntu16.04上利用opencv目标跟踪工具实现8种目标跟踪

    一共八种工具 八种工具包括 BOOSTING Tracker 和Haar cascades AdaBoost 背后所用的机器学习算法相同 但是距其诞生已有十多年了 这一追踪器速度较慢 并且表现不好 但是作为元老还是有必要提及的 最低支持Op
  • 操作系统面试题总结

    1 线程与进程的区别联系 2 进程通信方式有哪些 3 同步的方式有哪些 4 ThreadLocal与其它同步机制的比较 5 进程死锁的条件 第一题 1 线程是进程的一个实体 一个进程可以拥有多个线程 多个线程也可以并发执行 一个没有线程的进
  • [Unity 3D] DOTween 常用函数

    DOTween官方文档 http dotween demigiant com documentation php 一 控制变量 1 DOTween To static DOTween To getter setter to float du