文章来源:http://blog.youkuaiyun.com/likendsl/article/details/50887689
创建Tweener(有三种方法):
- static DOTween.To(getter, setter, to, float duration)
- 以DOTween.To(() => myVector, x => myVector = x, new Vector3(3, 4, 8), 1);为例,就是对myVector进行插值,目标值为Vector3(3, 4, 8)
- transform.DOMove(new Vector3(2,3,4), 1);
- rigidbody.DOMove(new Vector3(2,3,4), 1);
- material.DOColor(Color.green, 1);
对于unity内置的一些组件,都可以通过".+DO开头的方法"的方式创建补间动画
以transform.DOMove(new Vector3(2,3,4), 1)为例,new Vector3(2,3,4)是最终值,意思是用一秒的时间运动到Vector3(2,3,4)
而transform.DOMove(new Vector3(2, 3, 4), 1).From(),就是从Vector3(2,3,4)运动到当前位置
创建Sequence:
Sequence可以包含Sequence,当执行一个Sequence时会顺序执行Tweener,可以使用Insert方法实现同时执行。
Sequence的方法:
- static DOTween.Sequence()
- Append(Tween tween)
- AppendCallback(TweenCallback callback)
- AppendInterval(float interval)
- Insert(float atPosition, Tween tween)
- InsertCallback(float atPosition, TweenCallback callback)
- Join(Tween tween)
- Prepend(Tween tween)
- PrependCallback(TweenCallback callback)
- PrependInterval(float interval)
例子:
- Sequence mySequence = DOTween.Sequence();
- // Add a movement tween at the beginning
- mySequence.Append(transform.DOMoveX(1, 1));
- // Add a rotation tween as soon as the previous one is finished
- mySequence.Append(transform.DORotate(new Vector3(0, 180, 0), 1));
- // Delay the whole Sequence by 1 second
- mySequence.PrependInterval(1);
- // Insert a scale tween for the whole duration of the Sequence
- mySequence.Insert(0, transform.DOScale(new Vector3(3, 3, 3), mySequence.Duration()));
等同于:
- Sequence mySequence = DOTween.Sequence();
- mySequence.Append(transform.DOMoveX(45, 1))
- .Append(transform.DORotate(new Vector3(0, 180, 0), 1))
- .PrependInterval(1)
- .Insert(0, transform.DOScale(new Vector3(3, 3, 3), mySequence.Duration()));
上面我们提到了全局设置,这里我们再说一说针对Tweener和Sequence的局部设置
- float timeScale
- SetAs(Tween tween \ TweenParams tweenParams)
- SetAutoKill(bool autoKillOnCompletion = true)
- SetEase(Ease easeType \ AnimationCurve animCurve \ EaseFunction customEase)
- SetId(object id)
- SetLoops(int loops, LoopType loopType = LoopType.Restart)
- SetRecyclable(bool recyclable)
- SetUpdate(UpdateType updateType, bool isIndependentUpdate = false)
- 注意的一点是SetUpdate方法可以让目标忽略timeScale
回调方法:
- OnComplete(TweenCallback callback)
- OnKill(TweenCallback callback)
- OnPlay(TweenCallback callback)
- OnPause(TweenCallback callback)
- OnRewind(TweenCallback callback)
- OnStart(TweenCallback callback)
- OnStepComplete(TweenCallback callback)
- OnUpdate(TweenCallback callback)
- OnWaypointChange(TweenCallback<int> callback)
操作Tweener(有三种方法):
1.DOTween静态方法
- 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();
以上的是Pause方法,以下的是其余的操作方法。上面三种方式中,DOTween和Tweener都有以下的操作方法,而部件的话,要在前面加上"DO"。
- ompleteAll/Complete()
- FlipAll/Flip()
- GotoAll/Goto(float to, bool andPlay = false)
- KillAll/Kill(bool complete = true)
- PauseAll/Pause()
- PlayAll/Play()
- PlayBackwardsAll/PlayBackwards()
- PlayForwardAll/PlayForward()
- RestartAll/Restart(bool includeDelay = true)
- RewindAll/Rewind(bool includeDelay = true)
- TogglePauseAll/TogglePause()
文章来源:
http://blog.youkuaiyun.com/likendsl/article/details/50887689