zoukankan      html  css  js  c++  java
  • DOTween的基本用法

    首先声明一点,不要简单的认为 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:无限循环。

     1 using UnityEngine;
     2 using DG.Tweening;
     3 
     4 public class Subject1Test : MonoBehaviour
     5 {
     6     #region --变量定义
     7     private Tweener tweener;
     8     private bool isPause = false;
     9     #endregion
    10 
    11     #region --系统函数
    12     private void Start()
    13     {
    14         tweener = this.transform.DOMove(new Vector3(10, 0, 0), 5f);
    15         tweener.SetLoops(-1);//设置循环次数。-1:无限循环
    16         tweener.SetEase(Ease.OutBack);//设置缓动效果
    17         tweener.OnStart(delegate { Debug.Log("OnStart"); });//动画开始时调用,不管循环多少次,只调用一次
    18         tweener.OnUpdate(delegate { Debug.Log("OnUpdate"); });//动画播放时调用
    19         tweener.OnPlay(delegate { Debug.Log("OnPlay"); });//动画开始播放时调用
    20         tweener.OnPause(delegate { Debug.Log("OnPause"); });//动画暂停时调用
    21         tweener.OnKill(delegate { Debug.Log("OnKill"); });//动画完全结束时或者被杀死时调用
    22         tweener.OnStepComplete(delegate { Debug.Log("OnStepComplete"); });//单次动画结束时调用,因为我们设置了循环,这里时指单次动画结束
    23         tweener.OnComplete(delegate { Debug.Log("OnComplete"); });//动画完全结束时调用,在OnKill之前调用
    24         tweener.OnWaypointChange(delegate { Debug.Log("OnWaypointChange"); });
    25         tweener.OnRewind(delegate { Debug.Log("OnRewind"); });//倒放结束时调用
    26     }
    27     private void Update()
    28     {
    29         ControlTweener();
    30     }
    31     #endregion
    32 
    33     #region --自定义函数
    34     private void ControlTweener()
    35     {
    36         if (Input.GetKeyDown(KeyCode.Space))
    37         {
    38             isPause = !isPause;
    39             if (isPause)
    40             {
    41                 this.transform.DOPause();//暂停动画
    42             }
    43             else
    44             {
    45                 this.transform.DOPlay();//播放动画
    46             }
    47         }
    48         if (Input.GetKeyDown(KeyCode.F))
    49         {
    50             this.transform.DOPlayForward();//正放动画
    51         }
    52         if (Input.GetKeyDown(KeyCode.B))
    53         {
    54             this.transform.DOPlayBackwards();//倒放动画
    55         }
    56         if (Input.GetKeyDown(KeyCode.K))
    57         {
    58             this.transform.DOKill();//杀死动画
    59         }
    60     }
    61     #endregion
    62 }
  • 相关阅读:
    Java内存区域
    高并发
    集合框架
    面向对象基础概念
    java synchronized详解
    java使用DOM操作XML
    二、认识Xcode(第一个工程:Hello world)
    菜鸟手下的iOS开发笔记(swift)
    一、iOS开发环境搭建
    一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——实现篇:(十)使用JRTPLIB传输RTP数据
  • 原文地址:https://www.cnblogs.com/xiaoyulong/p/10041489.html
Copyright © 2011-2022 走看看