DoTween基础使用

DOTween的优点:

1.编写方面更加人性化

2.效率高很多,其中有一点是因为iTween使用的是unity内置的SendMessage

DOTween一般的样子是这样滴:

using DG.Tweening;

transform.DOMoveX(45, 1).SetDelay(2).SetEase(Ease.OutQuad).OnComplete(MyCallback);


Dotween的最常用的一些方法:

1.以DO开头的方法:就是补间动画的方法。例如:.DOMoveX(45, 1),表示X轴方向物体在1秒内移动到x=45的位置

2.以Set开头的方法:设置补间动画的一些属性。例如:.SetDelay(2):表示动画延迟两秒执行;SetEase(Ease.OutQuad)表示运动模式

3.以On开头的方法:补间动画的回调方法。例如:.OnComplete(MyCallback);表示在动画结束之后,需要调用的方法


DOTween初始化与全局设置:

当你第一次创建一个Tween时,DOTween就会自动初始化(只初始化一次),使用缺省值。

当然,也可以使用DOTween.Init方法进行自定义,但要在第一次创建一个Tween前。所有创建的Tween都会受DOTween.Init方法的影响。

但之后,你也可以通过DOTween类的一些静态方法或者变量来修改全局设置:

  1. static LogBehaviour DOTween.logBehaviour  
  2. static bool DOTween.showUnityEditorReport  
  3. static float DOTween.timeScale  
  4. static bool DOTween.useSafeMode  
  5. static DOTween.SetTweensCapacity(int maxTweeners, int maxSequences)  
  6. static bool DOTween.defaultAutoKill  
  7. static AutoPlay DOTween.defaultAutoPlay  
  8. static float DOTween.defaultEaseOvershootOrAmplitude  
  9. static float DOTween.defaultEasePeriod  
  10. static Ease DOTween.defaultEaseType  
  11. static LoopType DOTween.defaultLoopType  
  12. static bool DOTween.defaultRecyclable  
  13. static bool DOTween.defaultTimeScaleIndependent  
  14. static UpdateType DOTween.defaultUpdateType  

static DOTween.Init(bool recycleAllByDefault = false, bool useSafeMode = true, LogBehaviour logBehaviour = LogBehaviour.ErrorsOnly)

recycleAllByDefault :如果为true,则当Tween完成时就会被回收,放到一个池中;否则就会被destroy

useSafeMode :效率会稍微降低,但更安全

logBehaviour :默认值为只打印错误信息



创建Tweener的三种方法:

1.

  1. static DOTween.To(getter, setter, to, float duration)  
  2. 以DOTween.To(() => myVector, x => myVector = x, new Vector3(3, 4, 8), 1);为例,就是对myVector进行插值,目标值为Vector3(3, 4, 8)  



2.

  1. transform.DOMove(new Vector3(2,3,4), 1);  
  2. rigidbody.DOMove(new Vector3(2,3,4), 1);  
  3. material.DOColor(Color.green, 1);  


对于unity中内置的一些组件,DoTween可以通过".+DO开头的方法"的方法去创建自己所需的补间动画

而transform.DOMove(new Vector3(2, 3, 4), 1).From(),就是从Vector3(2,3,4)运动到当前位置


3.

  1. static DOTween.Punch(getter, setter, Vector3 direction, float duration, int vibrato, float elasticity)  
  2. static DOTween.Shake(getter, setter, float duration, float/Vector3 strength, int vibrato, float randomness, bool ignoreZAxis)  
  3. static DOTween.ToAlpha(getter, setter, float to, float duration)  
  4. static DOTween.ToArray(getter, setter, float to, float duration)  
  5. static DOTween.ToAxis(getter, setter, float to, float duration, AxisConstraint axis)  
  6.   
  7. static DOTween.To(setter, float startValue, float endValue, float duration)  

创建Sequence:

Sequence可以包含Sequence,当执行一个Sequence时会顺序执行Tweener,可以使用Insert方法实现同时执行。

Sequence的方法:

  1. static DOTween.Sequence()  
  2.   
  3. Append(Tween tween)  
  4. AppendCallback(TweenCallback callback)  
  5. AppendInterval(float interval)  
  6. Insert(float atPosition, Tween tween)  
  7. InsertCallback(float atPosition, TweenCallback callback)  
  8. Join(Tween tween)  
  9. Prepend(Tween tween)  
  10. PrependCallback(TweenCallback callback)  
  11. PrependInterval(float interval)  
举个栗子:

  1. //创建一个Sequence  
  2. Sequence mySequence = DOTween.Sequence();  
  3. mySequence.Append(transform.DOMoveX(1, 1));  
  4. mySequence.Append(transform.DORotate(new Vector3(0, 180, 0), 1));  
  5. mySequence.PrependInterval(1);  
这个就相当于:

  1. Sequence mySequence = DOTween.Sequence();  
  2. mySequence.Append(transform.DOMoveZ(45, 1))  
  3.           .Append(transform.DORotate(new Vector3(0, 180, 0), 1))  
  4.           .PrependInterval(1)  
  5.           .Insert(0, transform.DOScale(new Vector3(3, 3, 3), mySequence.Duration()));  

既然提到了Sequence,再来说下它的全局设置:

  1. float timeScale  
  2.   
  3. SetAs(Tween tween \ TweenParams tweenParams)  
  4. SetAutoKill(bool autoKillOnCompletion = true)  
  5. SetEase(Ease easeType \ AnimationCurve animCurve \ EaseFunction customEase)  
  6. SetId(object id)  
  7. SetLoops(int loops, LoopType loopType = LoopType.Restart)  
  8. SetRecyclable(bool recyclable)  
  9. SetUpdate(UpdateType updateType, bool isIndependentUpdate = false)  
  10. 其中需要注意的一点是SetUpdate方法可以让目标忽略timeScale 

Dotween的一些回调方法:

  1. OnComplete(TweenCallback callback)  动画完成之后需要做的事情
  2. OnKill(TweenCallback callback)      动画销毁之后需要做的事情
  3. OnPlay(TweenCallback callback)      动画进行时需要做的事情
  4. OnPause(TweenCallback callback)     动画暂停时需要做的事情
  5. OnRewind(TweenCallback callback)    动画重播时的事情
  6. OnStart(TweenCallback callback)     动画开始时的事情
  7. OnStepComplete(TweenCallback callback)  动画播放完调用一次
  8. OnUpdate(TweenCallback callback)        动画更新之后调用一次
  9. OnWaypointChange(TweenCallback<int> callback)  动画在路径点变化之后调用一次


这里附上DoTween的官方文档,提供了对不同组件的不同的Dotween方法:http://dotween.demigiant.com/documentation.php


by张伟


你可能感兴趣的:(unity3d)