首先声明一点,不要简单的认为 DOTween 只能用在 Transform 组件上完成一些简单的动画,或者是完成一些 UI 动画,DOTween 的用途是很广的,unity中有很多组件都可以使用 DOTween 插件完成动画,大家可以去 DOTween 的官网看一下http://dotween.demigiant.com/documentation.php。看完之后,你会有一种相见恨晚的感觉。

下面介绍一下常用的API,并以 Transform 组件写个小例子:

常用的函数都是以DO开头,大家可以自己看下文档。

组件实例.DOPlay():播放动画

组件实例.DOPause():暂停动画

组件实例.DOPlayForward():正放动画

组件实例.DOPlayBackwards():倒放动画,倒放不会循环

组件实例.DOKill():杀死动画

提醒下大家,一定要用组件实例去调用上面这些方法,如果用 this 关键字去调用,不会有语法错误,但是不会有效果

tweener.SetLoops():设置循环次数。-1:无限循环

tweener.SetEase():设置缓动效果

生命周期:

tweener.OnStart():动画开始时调用,不管循环多少次,只调用一次

tweener.OnUpdate():动画播放时调用

tweener.OnPlay():动画开始播放时调用

tweener.OnPause():动画暂停时调用

tweener.OnKill():动画完全结束时或者被杀死时调用

tweener.OnStepComplete():单次动画结束时调用,因为我们设置了循环,这里时指单次动画结束

tweener.OnComplete():动画完全结束时调用,在OnKill之前调用

tweener.OnWaypointChange():这个我还没搞清楚到底什么时候调用,知道的大佬告诉一声,谢谢!

tweener.OnRewind():倒放结束时调用

Sequence队列:就是将多个动画放到一个队列里面,然后挨个挨个播放,并可以循环。

DOTween.Sequence():创建队列。

sequence.Append(tweener):将动画加入队列。

sequence.Insert(1, tweener):插入一个并行的动画到队列的某个位置。

sequence.SetLoops(-1):设置队列是否循环。-1:无限循环。

 using UnityEngine;
using DG.Tweening; public class Subject1Test : MonoBehaviour
{
#region --变量定义
private Tweener tweener;
private bool isPause = false;
#endregion #region --系统函数
private void Start()
{
tweener = this.transform.DOMove(new Vector3(, , ), 5f);
tweener.SetLoops(-);//设置循环次数。-1:无限循环
tweener.SetEase(Ease.OutBack);//设置缓动效果
tweener.OnStart(delegate { Debug.Log("OnStart"); });//动画开始时调用,不管循环多少次,只调用一次
tweener.OnUpdate(delegate { Debug.Log("OnUpdate"); });//动画播放时调用
tweener.OnPlay(delegate { Debug.Log("OnPlay"); });//动画开始播放时调用
tweener.OnPause(delegate { Debug.Log("OnPause"); });//动画暂停时调用
tweener.OnKill(delegate { Debug.Log("OnKill"); });//动画完全结束时或者被杀死时调用
tweener.OnStepComplete(delegate { Debug.Log("OnStepComplete"); });//单次动画结束时调用,因为我们设置了循环,这里时指单次动画结束
tweener.OnComplete(delegate { Debug.Log("OnComplete"); });//动画完全结束时调用,在OnKill之前调用
tweener.OnWaypointChange(delegate { Debug.Log("OnWaypointChange"); });
tweener.OnRewind(delegate { Debug.Log("OnRewind"); });//倒放结束时调用
}
private void Update()
{
ControlTweener();
}
#endregion #region --自定义函数
private void ControlTweener()
{
if (Input.GetKeyDown(KeyCode.Space))
{
isPause = !isPause;
if (isPause)
{
this.transform.DOPause();//暂停动画
}
else
{
this.transform.DOPlay();//播放动画
}
}
if (Input.GetKeyDown(KeyCode.F))
{
this.transform.DOPlayForward();//正放动画
}
if (Input.GetKeyDown(KeyCode.B))
{
this.transform.DOPlayBackwards();//倒放动画
}
if (Input.GetKeyDown(KeyCode.K))
{
this.transform.DOKill();//杀死动画
}
}
#endregion
}

DOTween的基本用法的更多相关文章

  1. DoTween可视化编程用法详解

    DoTween可视化编辑 本文提供全流程,中文翻译.Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分享.心创新 ...

  2. DoTween用法教程

    DoTween用法攻略 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分享.心创 ...

  3. DoTween的用法

    using UnityEngine;using System.Collections;using DG.Tweening;using UnityEngine.UI; public class Test ...

  4. 时光煮雨 Unity3D让物体动起来③—UGUI DoTween&Unity Native2D实现

    本文首发蛮牛,次发博客园.接系列 第一篇,第二篇,本文为第三篇,再次感谢“武装三藏”在前两篇无私且精彩的问题解答 写在最前,时光煮雨,为了怀念 以下引用曾今读过的一些教程文章 其实这3种动画都有它特定 ...

  5. unity Dotween插件的简单介绍及示例代码

    unity里面做插值动画的插件有许多,比较常见的有itween.hotween.dotween.根据大家的反馈和实际体验来说,dotween插件在灵活性.稳定性.易用性上都十分突出.这里简单介绍下它的 ...

  6. Unity DoTween 动画使用案例

    这边我就直接放一个标准的Dotween动画的使用demo吧. 这个案例满足应该可以完成你所想实现的几乎所有复杂动画. void PlayTween() { //set tween data float ...

  7. Unity进阶----DoTween及工程文件夹的建立(2018/11/12)

    DoTween 仅介绍部分常用用法,代码参上:(其它操作见官网:http://dotween.demigiant.com/documentation.php) using System.Collect ...

  8. DoTween

    dotween最原始的用法 using System.Collections; using System.Collections.Generic; using UnityEngine; using D ...

  9. Unity3D热更新之LuaFramework篇[05]--Lua脚本调用c#以及如何在Lua中使用Dotween

    在上一篇文章 Unity3D热更新之LuaFramework篇[04]--自定义UI监听方法 中,我对LuaBehaviour脚本进行了扩展,添加了两个新的UI监听方法,也提到最好能单写一个脚本处理此 ...

随机推荐

  1. echars 图表提示框自定义显示

    一 . 显示单条数据时在tooltip里调用formatter函数给自定义提示框内数据. 效果图显示 二 . 当显示多条数据时.为保证和原来的效果相同需要自己实现点的效果.如果不实现,提示框则不限点的 ...

  2. 【原创】访问Linux进程文件表导致系统异常复位的排查记录

    前提知识: Linux内核.Linux 进程和文件数据结构.vmcore解析.汇编语言 问题背景: 这个问题出自项目的一个安全模块,主要功能是确定某进程是否有权限访问其正在访问的文件. 实现功能时,需 ...

  3. Excel VBA ——字典实用技巧

    最近写了一些小功能,对字典有了进一步的理解,太强大了! 个人最近用过的字典应用有这么几个,写下来防止自己忘~同时方便大家 一.查找重复行 [原理]利用字典的exist方法,将数据加入字典时判断一下,如 ...

  4. 一起学libcef--搭建自己的libcef运行环境(Win32程序,错误C2220解决方案)

    转自 http://blog.csdn.net/wangshubo1989/article/details/50180413 现在就来讲讲如何在自己的win32程序中搭建libcef运行环境. 首先就 ...

  5. jQuery取得radio的值 取select得值

    获取一组单选按钮对象: var obj_payPlatform = $('#wrap input[name="payMethod"]'); 获取被选中按钮的值 : var val_ ...

  6. JDBC 心得

    还记得jdbc的及个步骤, 一是class出对象 2  链接数据库 3 SQL  pre开头的 4 允许SQL,result,exeupdate, 在这里想写的通过反射得到对象, Hibernate有 ...

  7. java实现将包含多个<REC>的文件拆成若干只包含一个<REC>的文件

    遍历文件夹里的文件,将包含多个<REC>的文件拆成若干只包含一个<REC>的文件 package com.prepub; import java.io.BufferedRead ...

  8. pandas和re中正则表达式的意思

    这里()有两种意思,第一个就是表示匹配范围,另外一个就是输出这个匹配 下面那条语句就是告诉程序,是输出整个句子,“?:”非获取匹配,匹配冒号后的内容但不获取匹配结果,不进行存储供以后使用.

  9. React forwardRef:跳转引用

    一 在DOM组件中使用 import React, { Component } from 'react'; // 跳转引用对象本身并不关心ref,而是由渲染函数转发ref const FancyBut ...

  10. 关于element-ui resetFields

    上周换到新项目组,依然是vue,不过是搭配element-ui. 这两天开始用el-form,发现了个问题. 就是我的表单确定提交之后,需要重置表单,一开始我没看熟API,直接将form对象手动赋成初 ...