unity3d DOTween插件学习笔记

    在学习UGUI的过程中,发现NGUI 中有各种Tween动画,UGUI中却没有,需要使用Animator等方法实现,甚是麻烦。朋友推荐使用DOTween ,故研究了一下,并将学习过程记录下来。

   本人使用的Unity3d 版本为5.0.2f1 。DOTween插件下载地址 ,点这里 。

    1,DOTween.To  实现物体移动

using UnityEngine;
using System.Collections;
using DG.Tweening;

/// 
/// 效果:方块从原点移动到(5,5,5)的位置
/// 
public class GetStart : MonoBehaviour
{

    public Vector3 vec = Vector3.zero;

    public Transform cubeTransform;

    void Start()
    {
        /**这个方法的作用和插值类似,不过胜在可以控制运行时间.
         * 如果在移动过程不做什么操作,前两个参数格式基本不变
         *参数的含义分别是:
         * () => myValue : 会返回一个值,将值赋值给vec
         *  x => vec = x : 由第一个参数和第3个参数得到差值 x ,将x赋值给myValue 。
         *  目标位置
         *  运行时间
         **/
        DOTween.To(() => vec, x => vec = x, new Vector3(5, 5, 5), 2);
    }

    void Update()
    {
        cubeTransform.position = vec;
    }
}  
        //也可以当插值来使用,运行先快后慢 ,呈抛物线
        float f = 0;
        DOTween.To(() => f, x => f = x, 5, 2);

2.实现UI 移动

using UnityEngine;
using System.Collections;
using DG.Tweening;
public class UITweenControl : MonoBehaviour {

    public RectTransform panelTransform;
    private bool isPress = false;

	void Start () {
        // panelTransform.DOMove(new Vector3(0,0,0),0.3f); //移动的是世界坐标

        //默认的Tween动画会在执行完之后销毁掉
        //Tweener 是用来保存动画的信息的,在调用do类型的方法都会创建一个tweener 对象 ,这个对象被dotween对象管理,在Hierarchy界面上可以看得到
        Tweener tweener = panelTransform.DOLocalMove(new Vector3(5, 5, 5), 0.3f);  //移动的是本地坐标
        tweener.SetAutoKill(false); //将自动销毁设置为false
        tweener.Pause(); //默认开始会执行动画。由于每次只需DoLocalMove 都会生成一个Tweener,这样并不好,我们暂停动画,手动控制
	}

    public void OnButtonClick()
    {
        if(!isPress){
            //播放动画
            panelTransform.DOPlayForward();
        }
        else
        {
            //倒播动画
            panelTransform.DOPlayBackwards();
        }
        isPress = !isPress;
    }
}

3.动画的一些参数设置和事件

using UnityEngine;
using System.Collections;
using DG.Tweening;

public class ArgumentSet : MonoBehaviour
{
   
    void Start()
    {
       Tweener tweener = transform.DOLocalMoveX(0,2);
       tweener.SetEase(Ease.OutBounce);   //运动曲线设置(默认曲线是抛物线)
       tweener.OnComplete(TweenFinish);   //动画结束事件
    }

    void  TweenFinish(){
        print("TweenFinish");
    }
}

还有很多其他的设置 ,具体的看官网,点击打开链接。

unity3d DOTween插件学习笔记_第1张图片

4.关于From 的使用

using UnityEngine;
using System.Collections;
using DG.Tweening;
//From的使用
public class FromTween : MonoBehaviour {
	
    void Start () {
          //当前位置为 (-10,0,0)
          transform.DOMoveX(2, 2);   //2秒之内由当前位置运动到 (2,0,0)
       // transform.DOMoveX(2, 2).From();  //2秒之内由(2,0,0)运动到 (-10,0,0).和上面相反
       // transform.DOMoveX(2, 2).From(true);  //2秒之内由(-8,0,0)运动到 (-10,0,0) ,可见加了True 变成了局部坐标
	}
}


5.文本动画

using UnityEngine;
using System.Collections;
using DG.Tweening ;
using UnityEngine.UI ;

/// 
/// 文本动画
/// 
public class TweenTesxt : MonoBehaviour
{

    private Text text;

    void Start()
    {
        text = GetComponent();
        text.DOText("TweenTextTweenTextTweenText", 2); //本身为空的时候效果是:逐字显示, 不为空的时候,将之前的覆盖掉
    }
}

6.震动效果

using UnityEngine;
using System.Collections;
using DG.Tweening;

/// 
/// 震动
/// 
public class ShakeTween : MonoBehaviour
{
    void Start()
    {
        transform.DOShakePosition(1, new Vector3(1, 2, 0));  //时间 1秒  在x、y轴上震动 ,x轴震动强度为1 ,y轴震动强度为2
    }

}


7.颜色、透明度渐变

using UnityEngine;
using System.Collections;
using DG.Tweening;
using UnityEngine.UI;

/// 
/// 透明度和颜色
/// 
public class TweenColorAndFade : MonoBehaviour
{
    private Text text;

    void Start()
    {
        text = GetComponent();
        text.DOColor(Color.red, 3);
        text.DOFade(0, 3);
    }

}


8.可视化编辑

插件自带的两个脚本DO Tween Animation 和 DO Tween Path .


unity3d DOTween插件学习笔记_第2张图片

AutoPlay : 开始运行

AutoKill : 运行完成删除动画

Duration : 运行时间

Delay : 延时

Ease : 运动曲线

Loops :循环次数    -1 为一直循环 ,0不循环,只执行一次

Path Type :曲线类型 线性或者圆滑

Close Path : 首尾相连

Local Movement : 本地运动,具体作用还不知道

Orientation : 物体运动面朝方向

Relative :选择之后路径点有成为物体子对象的效果 (随着物体被拖动而移动)

Colot :路径线条颜色

Show Indexes :路径点的角标显示

LIve Preview : 具体作用不明

Handles Type :路径点的坐标样式

Handles Mode : 透视或者正交  ,具体作用不明

Reset Path :重置路径




你可能感兴趣的:(Unity3d)