当前位置:   article > 正文

DOTween学习----DOTween插件的使用_dotween join

dotween join

1.主要的方法

  1. 以DO开头的方法:就是补间动画的方法。例如:transform.DOMoveX(100,1)
  2. 以Set开头的方法:设置补间动画的一些属性。例如:myTween.SetLoops(4, LoopType.Yoyo)
  3. 以On开头的方法:补间动画的回调方法。例如:myTween.OnStart(myStartFunction)

2.命名法

  1. Tweener:补间动画
  2. Sequence:相当于一个Tweener的链表,可以通过执行一个Sequence来顺序执行组合的Tweener
  3. Tween:Tweener + Sequence
  4. Nested tween:Sequence中的一个Tweener称为一个Nested tween

3.动画组合方式

  1. Sequence.Append构建缓动序列,同时Join方法支持并行缓动。
  2. Append是在序列的末端插入一个Tweener,如果前面的Tweener都执行完了,就执行这个Tweener。
  3. Join也是在序列末端插入一个Tweener,不同的是,这个Tweener将与前一个非Join加进来的Tweener并行执行。

4.动画插入介绍

  1. sequence.Append(Tween tween)
    添加一个动画到序列末尾。(意思就是当序列前面动画播放完毕时此动画才开始播放) 顺序播放
  2. sequence.AppendCallback(TweenCallback cb)
    添加回调函数到序列末尾。(当序列前面动画播放完毕时会执行此方法)
  3. sequence.AppeedInterval(float interval)
    添加一段空时间到序列末尾。(当序列前面动画播放完毕时会延迟一段时间)
  4. sequenve.Insert(float time,Tween tween)
    插入一段动画到指定时间。(注意动画是和原序列当前时间动画合并重叠)(可以随意的控制加入tween的时间节点)
  5. sequenve.InsertCallback(float time,TweenCallback cb)
    插入回调函数到序列指定时间。
  6. sequenve.Join(Tween tween) 插入动画与序列最后一个动画(这里的最后是指最后加入序列而非序列末尾)同时播放。
  7. sequenve.Prepend、sequenve.PrependCallback、sequenve.PrependInterval
    和前面三个类似,这里是加入到序列开头。

动画插入注意事项:

  1. 以上方法只能在序列刚被创建之后执行也就是必须是在创建序列同一个代码块,或者是当序列暂停时执行。否则无效。
  2. 一个动画必须是完全被创建之后才能加入到序列之中,因为加入到序列之后该动画将会被锁定。
  3. 无限循环的动画是不能被加入到序列中。
  4. 你可以创建一个序列只有回调函数和延迟,这样这个序列就当做了一个计时器使用。

5.动画回调介绍

  1. OnComplete(MyCallback 回调)
    例:transform.DOMoveX(4, 1).OnComplete(MyCallback);//设置回调,在tween到达完成时触发,所有循环都包含在内。
  2. OnKill(MyCallback 回调)
    例:transform.DOMoveX(4, 1).OnKill(MyCallback);//设置一个回调,在tween被删除的那一刻被触发
  3. OnPlay(MyCallback 回调)
    例:transform.DOMoveX(4, 1).OnPlay(MyCallback);//设置一个回调,当动画设置为播放状态时,在任何最终延迟之后将被触发。每次动画从暂停状态恢复播放时也称为。
  4. OnPause(MyCallback 回调)
    例:transform.DOMoveX(4, 1).OnPause(MyCallback);//设置回调,当动画状态从播放状态更改为暂停时将被触发
  5. OnRewind(MyCallback 回调)
    例:transform.DOMoveX(4, 1).OnRewind(MyCallback);//设置一个回调播放时通过调用或到达起始位置来重新播放时触发
  6. OnStart(MyCallback 回调)
    例:transform.DOMoveX(4, 1).OnStart(MyCallback);//设置将在补间启动时触发一次的回调(意味着当补间第一次设置为播放状态时,在任何最终延迟之后)。
  7. OnStepComplete(MyCallback 回调)
    例:transform.DOMoveX(4, 1).OnStepComplete(MyCallback);//设置一个回调,每次动画完成一个循环循环后将被触发。
  8. OnUpdate(MyCallback 回调)
    例:transform.DOMoveX(4, 1).OnUpdate(MyCallback);//设置一个回调,将在每次动画更新时触发。
  9. OnWaypointChange(MyCallback<int> 回调)
    例:
void Start() {
	transform.DOPath(waypoints, 1).OnWaypointChange(MyCallback);//设置将在路径补间的当前航点更改时触发的回调。
	//这是一个特殊的回调,与其他回调不同,它需要接受一个类型的参数int(这将是新更改的航点索引)。
}
void MyCallback(int waypointIndex) {
	Debug.Log("Waypoint index changed to " + waypointIndex);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

注意:附加到嵌套动画的回调依然会按照正确的顺序工作。

动画组合(飘字效果)
**飘字效果制作**
分析:其实整个动画就是三部分(当然为了使得效果更加漂亮可以加更多的细节在里面,比如放大缩小)

  1. 字体向上移动同时颜色Alpha从0渐变到1。
  2. 延迟1秒,字体显示一秒钟。
  3. 字体向上移动同时颜色Alpha从1渐变到0。
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using DG.Tweening;
public class FlyText : MonoBehaviour {

    public void FlyTo(Graphic graphic)
    {
        RectTransform rt = graphic.rectTransform;
        Color c = graphic.color;
        c.a = 0;
        graphic.color = c;                                                   //先将字体透明
        Sequence mySequence = DOTween.Sequence();                            //创建空序列
        Tweener move1 = rt.DOMoveY(rt.position.y + 20, 0.5f);                //创建向上移动的第一个动画
        Tweener move2 = rt.DOMoveY(rt.position.y + 40, 0.5f);                //创建向上移动的第二个动画
        Tweener alpha1 = graphic.DOColor(new Color(c.r, c.g, c.b, 1), 0.5f); //创建Alpha由0到1渐变的动画
        Tweener alpha2 = graphic.DOColor(new Color(c.r, c.g, c.b, 0), 0.5f); //创建Alpha由1到0渐变的动画
        mySequence.Append(move1);                  //先添加向上移动的动画
        mySequence.Join(alpha1);                   //同时执行Alpha由0到1渐变的动画
        mySequence.AppendInterval(1);              //延迟1秒钟
        mySequence.Append(move2);                  //添加向上移动的动画
        mySequence.Join(alpha2);                   //同时执行Alpha由1到0渐变的动画
    }
    public void Update()
    {
        if(Input.GetMouseButtonDown(0))
        {
            FlyTo(GetComponent<Text>());
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
--弹窗动画 
function CUIManager:ShowWindows(uiobj)
    local rt = uiobj.transform
    rt.transform.position = Vector3.New(0, 0, 0)                        
    rt.transform.localScale = Vector3.New(1, 1, 1)
    local scalTime = 0.05
    local m_scale = rt:DOScale(Vector3(1.1, 1.1, 1), scalTime)
    m_scale:SetEase(DG.Tweening.Ease.Linear)
    m_scale:SetLoops(2, DG.Tweening.LoopType.Yoyo) 
    m_scale = rt:DOScale(Vector3(0.9, 0.9, 1), scalTime)
    m_scale:SetEase(DG.Tweening.Ease.Linear)
    m_scale:SetLoops(2, DG.Tweening.LoopType.Yoyo) 
    rt.transform:DOShakePosition(scalTime, Vector3(10, 10, 10))
end
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
void acTest()
{
// 让当前物体从x=-10,移动到x=10,整个过程必须是9秒钟完成
 _tweener = _imageTrans.DOLocalMoveX (10, 9);
// 向前播放动画
 _tweener.PlayForward ();
//倒着播放
_tweener.PlayBackwards ();
// 设置匀速移动
_tweener.SetEase (Ease.Linear);
// 设置循环次数,-1表示无限循环
_tweener.SetLoops (-1);
// 动画播放完成之后的回调函数
_tweener.OnComplete (TweenComplete);
   
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
//控制UGUI的文本组件,文字以打印机的特效显示
void PrintStr ()
{
        string str = "打印几个字!"; 

        _text = GetComponent <Text> ();
        _text.DOText (str, 5);

        // _text.DOColor (Color.yellow, 5);
        _text.DOBlendableColor (Color.yellow, 5);
} 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
//屏幕震动效果 
void Shake()
{
    transform.DOShakePosition (2f, new Vector3 (2, 2, 3));
    transform.DOShakeScale (2, new Vector3 (3, 3, 3));
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
操作Tweener(有三种方法)1.DOTween静态方法
// Pauses all tweens  
DOTween.PauseAll();  
// Pauses all tweens that have "badoom" as an id  
DOTween.Pause("badoom");  
// Pauses all tweens that have someTransform as a target  
DOTween.Pause(someTransform);  

2.Tweener方法
 myTween.Pause();  

3.组件.+以DO开头的方法
transform.DOPause();
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

6.属性设置

SetAs(Tween tween \ TweenParams tweenParams)

设置tween(id,ease,loops,delay,timeScale,callbacks等)的参数作为给定的参数或者给予TweenParams对象。
注意:如果动画已经开始,则没有任何效果。

例:

// Store settings for an infinite looping tween with elastic ease

TweenParams tParms = new TweenParams().SetLoops(-1).SetEase(Ease.OutElastic);

// Apply them to a couple of tweens

transformA.DOMoveX(15, 1).SetAs(tParms);

transformB.DOMoveY(10, 1).SetAs(tParms);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

tolua 中使用组合动画

function  StepComplete ()  
   logError("循环动画中单次完成回调!")  
end  
  
function  Complete ()  
   logError("动画完成回调!")  
end  
  
Panel.Light[1]:GetComponent('Image'):DOFade(0,2)  
Panel.Light[1]:GetComponent('Image'):DOColor(Color.New(1,1,1,0.5),2)  
Panel.Light[1].transform:DOLocalMoveY(-300,-100, false):SetEase(DG.Tweening.Ease.Linear):SetLoops(-1):OnStepComplete( StepComplete )  
  
local sequence = DG.Tweening.DOTween.Sequence()   --动画列队  
sequence:Append(  Panel.Light[1]:GetComponent("Image"):DOFade(1,1.5))  
sequence:Append(  Panel.Light[1]:GetComponent("Image"):DOFade(0,1.5))  
sequence:Play()    
sequence:OnComplete(Complete) 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

转载:https://www.cnblogs.com/xyptechnology/p/7574890.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/89792
推荐阅读
相关标签
  

闽ICP备14008679号