DoTween使用方法.docx
- 文档编号:4267510
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:7
- 大小:16.77KB
DoTween使用方法.docx
《DoTween使用方法.docx》由会员分享,可在线阅读,更多相关《DoTween使用方法.docx(7页珍藏版)》请在冰豆网上搜索。
DoTween使用方法
DoTween使用方法
官方文档链接:
1.编写方面更加人性化
2.效率高很多很多很多,其中有一点是因为iTween使用的是unity内置的SendMessage
DOTween一般的样子是这样滴:
usingDG.Tweening;
transform.DOMoveX(45,1).SetDelay
(2).SetEase(Ease.OutQuad).OnComplete(MyCallback);
好了,正式开始!
一些名词:
Tweener:
补间动画
Sequence:
相当于一个Tweener的链表,可以通过执行一个Sequence来执行一串Tweener
Tween:
Tweener+Sequence
Nestedtween:
Sequence中的一个Tweener称为一个Nestedtween主要的方法(就是最常用的):
1.以DO开头的方法:
就是补间动画的方法。
例如:
transform.DOMoveX(100,1)
2.以Set开头的方法:
设置补间动画的一些属性。
例如:
myTween.SetLoops(4,LoopType.Yoyo)
3.以On开头的方法:
补间动画的回调方法。
例如:
myTween.OnStart(myStartFunction)DOTween初始化与全局设置:
当你第一次创建一个Tween时,就会自动初始化(只初始化一次),使用缺省值。
当然,也可以使用DOTween.Init方法进行自定义,但要在第一次创建一个Tween前。
所有创建的Tween都会受DOTween.Init方法的影响。
但之后,你也可以通过DOTween类的一些静态方法或者变量来修改全局设置:
staticLogBehaviourDOTween.logBehaviour
staticboolDOTween.showUnityEditorReport
staticfloatDOTween.timeScale
staticboolDOTween.useSafeMode
staticDOTween.SetTweensCapacity(intmaxTweeners,intmaxSequences)staticboolDOTween.defaultAutoKill
staticAutoPlayDOTween.defaultAutoPlay
staticfloatDOTween.defaultEaseOvershootOrAmplitude
staticfloatDOTween.defaultEasePeriod
staticEaseDOTween.defaultEaseType
staticLoopTypeDOTween.defaultLoopType
staticboolDOTween.defaultRecyclable
staticboolDOTween.defaultTimeScaleIndependent
staticUpdateTypeDOTween.defaultUpdateTypestaticDOTween.Init(boolrecycleAllByDefault=false,booluseSafeMode=true,LogBehaviourlogBehaviour=LogBehaviour.ErrorsOnly)
recycleAllByDefault:
如果为true,则当Tween完成时就会被回收,放到一个池中;否则就会被destroy
useSafeMode:
效率会稍微降低,但更安全
logBehaviour:
默认值为只打印错误信息创建Tweener(有三种方法):
1.
staticDOTween.To(getter,setter,to,floatduration)
以DOTween.To(()=>myVector,x=>myVector=x,newVector3(3,4,8),1);为例,就是对myVector进行插值,目标值为Vector3(3,4,8)
2.
transform.DOMove(newVector3(2,3,4),1);
rigidbody.DOMove(newVector3(2,3,4),1);
material.DOColor(Color.green,1);
对于unity内置的一些组件,都可以通过".+DO开头的方法"的方式创建补间动画
以transform.DOMove(newVector3(2,3,4),1)为例,newVector3(2,3,4)是最终值,意思是用一秒的时间运动到Vector3(2,3,4)
而transform.DOMove(newVector3(2,3,4),1).From(),就是从Vector3(2,3,4)运动到当前位置
3.
staticDOTween.Punch(getter,setter,Vector3direction,floatduration,intvibrato,floatelasticity)
staticDOTween.Shake(getter,setter,floatduration,float/Vector3strength,intvibrato,floatrandomness,boolignoreZAxis)
staticDOTween.ToAlpha(getter,setter,floatto,floatduration)
staticDOTween.ToArray(getter,setter,floatto,floatduration)
staticDOTween.ToAxis(getter,setter,floatto,floatduration,AxisConstraintaxis)staticDOTween.To(setter,floatstartValue,floatendValue,floatduration)创建Sequence:
Sequence可以包含Sequence,当执行一个Sequence时会顺序执行Tweener,可以使用Insert方法实现同时执行。
Sequence的方法:
staticDOTween.Sequence()Append(Tweentween)
AppendCallback(TweenCallbackcallback)
AppendInterval(floatinterval)
Insert(floatatPosition,Tweentween)
InsertCallback(floatatPosition,TweenCallbackcallback)
Join(Tweentween)
Prepend(Tweentween)
PrependCallback(TweenCallbackcallback)
PrependInterval(floatinterval)例子:
[csharp]viewplaincopyprint?
//GrabafreeSequencetouse
SequencemySequence=DOTween.Sequence();
//Addamovementtweenatthebeginning
mySequence.Append(transform.DOMoveX(1,1));
//Addarotationtweenassoonasthepreviousoneisfinished
mySequence.Append(transform.DORotate(newVector3(0,180,0),1));
//DelaythewholeSequenceby1second
mySequence.PrependInterval
(1);
//InsertascaletweenforthewholedurationoftheSequence
mySequence.Insert(0,transform.DOScale(newVector3(3,3,3),mySequence.Duration()));//GrabafreeSequencetouse
SequencemySequence=DOTween.Sequence();
//Addamovementtweenatthebeginning
mySequence.Append(transform.DOMoveX(1,1));
//Addarotationtweenassoonasthepreviousoneisfinished
mySequence.Append(transform.DORotate(newVector3(0,180,0),1));
//DelaythewholeSequenceby1second
mySequence.PrependInterval
(1);
//InsertascaletweenforthewholedurationoftheSequence
mySequence.Insert(0,transform.DOScale(newVector3(3,3,3),mySequence.Duration()));等同于:
[csharp]viewplaincopyprint?
SequencemySequence=DOTween.Sequence();
mySequence.Append(transform.DOMoveX(45,1))
.Append(transform.DORotate(newVector3(0,180,0),1))
.PrependInterval
(1)
.Insert(0,transform.DOScale(newVector3(3,3,3),mySequence.Duration()));SequencemySequence=DOTween.Sequence();
mySequence.Append(transform.DOMoveX(45,1))
.Append(transform.DORotate(newVector3(0,180,0),1))
.PrependInterval
(1)
.Insert(0,transform.DOScale(newVector3(3,3,3),mySequence.Duration()));
上面我们提到了全局设置,这里我们再说一说针对Tweener和Sequence的局部设置
floattimeScaleSetAs(Tweentween\TweenParamstweenParams)
SetAutoKill(boolautoKillOnCompletion=true)
SetEase(EaseeaseType\AnimationCurveanimCurve\EaseFunctioncustomEase)
SetId(objectid)
SetLoops(intloops,LoopTypeloopType=LoopType.Restart)
SetRecyclable(boolrecyclable)
SetUpdate(UpdateTypeupdateType,boolisIndependentUpdate=false)
注意的一点是SetUpdate方法可以让目标忽略timeScale回调方法:
OnComplete(TweenCallbackcallback)
OnKill(TweenCallbackcallback)
OnPlay(TweenCallbackcallback)
OnPause(TweenCallbackcallback)
OnRewind(TweenCallbackcallback)
OnStart(TweenCallbackcallback)
OnStepComplete(TweenCallbackcallback)
OnUpdate(TweenCallbackcallback)
OnWaypointChange(TweenCallback<int>callback)还有一些针对部分Tweener的特殊的局部设置:
注意SetOptions方法必须紧跟Tweener,就好像这样:
DOTween.To(()=>myVector,x=>myVector=x,newVector3(2,2,2),1).SetOptions(AxisConstraint.Y,true);TweenParams:
就是可以将一些参数应用到多个Tweener中[csharp]viewplaincopyprint?
//Storesettingsforaninfiniteloopingtweenwithelasticease
TweenParamstParms=newTweenParams().SetLoops(-1).SetEase(Ease.OutElastic);
//Applythemtoacoupleoftweens
transformA.DOMoveX(15,1).SetAs(tParms);
transformB.DOMoveY(10,1).SetAs(tParms);//Storesettingsforaninfiniteloopingtweenwithelasticease
TweenParamstParms=newTweenParams().SetLoops(-1).SetEase(Ease.OutElastic);
//Applythemtoacoupleoftweens
transformA.DOMoveX(15,1).SetAs(tParms);
transformB.DOMoveY(10,1).SetAs(tParms);操作Tweener(有三种方法):
1.DOTween静态方法[csharp]viewplaincopyprint?
//Pausesalltweens
DOTween.PauseAll();
//Pausesalltweensthathave"badoom"asanid
DOTween.Pause("badoom");
//PausesalltweensthathavesomeTransformasatarget
DOTween.Pause(someTransform);//Pausesalltweens
DOTween.PauseAll();
//Pausesalltweensthathave"badoom"asanid
DOTween.Pause("badoom");
//PausesalltweensthathavesomeTransformasatarget
DOTween.Pause(someTransform);2.Tweener方法[csharp]viewplaincopyprint?
myTween.Pause();myTween.Pause();3.部件.+以DO开头的方法[csharp]viewplaincopyprint?
transform.DOPause();transform.DOPause();
以上的是Pause方法,以下的是其余的操作方法。
上面三种方式中,DOTween和Tweener都有以下的操作方法,而部件的话,要在前面加上"DO"。
CompleteAll/Complete()
FlipAll/Flip()
GotoAll/Goto(floatto,boolandPlay=false)
KillAll/Kill(boolcomplete=true)
PauseAll/Pause()
PlayAll/Play()
PlayBackwardsAll/PlayBackwards()
PlayForwardAll/PlayForward()
RestartAll/Restart(boolincludeDelay=true)
RewindAll/Rewind(boolincludeDelay=true)
TogglePauseAll/TogglePause()一些特殊的操作方法:
ForceInit()
GotoWaypoint(floatwaypointIndex,boolandPlay=false)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DoTween 使用方法