命名空间 using DG.Tweening;
DOTween是一个快速、高效、完全类型安全的面向对象的Unity动画引擎,免费和开源,便于开发者实现多种动画表现。
UI
Image
方法 | 描述 |
DOFade(float to,float duration) | 控制Image的alpha值(0~1),表现淡入淡出效果 |
DOColor(Color to,float duration) | 在duration时间内,改变Image的Color |
DOFillAmount(float to,float duration) | 在duration时间内,改变Image的Fill Amount |
DOGradientColor(Gradient to,float duration) | 根据给定的颜色梯度 to,在duration时间内实现Image的颜色渐变 |
DOBlendableColor(Color to,float duration) | 混合控制Image的颜色变化 |
Slider
方法 | 描述 |
DOValue(float to,float duration,bool snapping) | 在duration时间内将slider的value变化为to,snapping是可选项 |
Text
方法 | 描述 |
DOColor(Color to,float duration) | 在duration时间内,改变Text的Color 为To |
DOFade(float to,float duration) | 在duraiton时间内,改变Text的alpha的值(0~1) |
DOText(string to,float duration,bool richTextEnabled..) | 在duration时间内,逐步显示to的内容,可以实现打字显示效果,可以支持富文本 |
DOBlendableColor(Color to,float duration) | 混合控制Text的颜色变化 |
Outline
方法 | 描述 |
DOColor(Color to,float duraiton | 改变outline的颜色 |
DOFade(float to,float duration) | 改变outline的alpha值(0~1) |
Transform
移动
方法 | 描述 |
DOMove(Vector3 to,float duration,bool snapping) | 在duration时间内从当前位置移动到位置to。snapping是可选项,当为true时,平滑地将所有值对齐为整数,运动会不平滑 |
DOMoveX/DOMoveY/DOMoveZ(float to,float duration,bool snapping) | 在duration时间内,在X/Y/Z轴方向上移动 to的距离,snapping用法同上 |
DOLocalMove(Vector3 to,float duration,bool snapping) | 在duration时间内将局部位置移动到位置to。 |
DOLocalMoveX/DOLocalMoveY/DOLocalMoveZ(float to,float duration,bool snapping) | 在duration时间内,在X/Y/Z轴方向上将局部坐标移动 to的距离 |
跳跃
方法 | 描述 |
DOJump(Vector3 endValue,float jumpPower,int numJumps,float duration,bool snapping) | endValue 最终要跳跃到的位置 jumpPower 跳跃的强度,决定跳跃的高度(当前位置Y加上该值) numJumps 跳跃的次数 duration 总持续时间 |
DOLocalJump(Vector3 endValue,float jumpPower,int numJumps,float duration,bool snapping) | 相对于局部坐标跳跃,含义同上 |
旋转
方法 | 描述 |
DORotate(Vector3 to,float duration,RotateMode mode) | to 旋转目标值 duration 旋转用时 RotateMode Fast 旋转采用最短路线,切旋转不会超过360° FastBeyond360 旋转将超过360° WorldAxisAdd 类似于使用transform.Rotate(new Vector3(20, 0, 0),Space.World),最终值始终被视为相对值 LocalAxisAdd 类似于使用transform.Rotate(new Vector3(20, 0, 0),Space.Self),最终值始终被视为相对值 |
DORotateQuaternion(Quaternion to,float duration) | to 要旋转到的四元数值 duration 旋转用时 |
DOLocalRotate(Vector3 to,float duration,RotateMode mode) | 借助欧拉角旋转局部坐标 |
DOLocalRotateQuaternion(Quaternion to,float duration) | 借助四元数旋转局部坐标 |
DOLookAt(Vector3 towards,float duration,AxisConstraint axisConstraint,Vector3 up) | 旋转目标使其朝向指定位置 towards 朝向目标位置 duration 旋转总用时 axisConstraint 只旋转此轴 up 定义向上方向的向量 |
DODynamicLookAt(Vector3 towards,float duraion,AxisConstraint axisConstraint,Vector3 up) | 旋转目标,使其朝向给定位置,每帧更新 lookAt 位置(与此相反,当补间开始时,只计算一次 lookAt 旋转) |
缩放
方法 | 描述 |
DOScale(float to,float duration) | 在duration时间内,将物体缩放to倍数 |
DOScale(Vector2 to,float duration) | 在duration时间内,将尺寸设置为to |
DOScaleX/DoScaleY/DoScaleZ(float to,float duration) | 在X/Y/Z轴方向上进行缩放 |
Punch
方法 | 描述 |
DOPunchPosition(Vector3 punch,float duration,int vibrato,float elasticity,bool snapping) | 受到冲击后的回弹效果 punch 要被击打到的最远位置和方向 duration 冲击持续时间 vibrato 物体振动频率 elasticity 值一般在0到1之间 |
DOPunchRotation(Vector3 punch,float duration,int vibrato,float elasticity) | 受到冲击后旋转效果 |
DOPunchScale(Vector3 punch,float duration,int vibrato,float elasticity) | 受到冲击后实现弹性缩放效果 |
Shake
方法 | 描述 |
DOShakePosition(float duration,float strength,int vibrato,float randomness,bool snapping,bool fadeOut) | 使物体局部位置发生抖动 duration 抖动持续时间 strength 抖动强度 vibrato 振动频率 randomness 表示多大的震动将是随机的 |
DOShakePosition(float duration,Vectort3 strength,int vibrato,float randomness,bool snapping,bool fadeOut) | 同上,使用Vector3代替float,可以自定义每个轴上的抖动强度 |
DOShakeRotation(float duration,float/Vector3 strength,int vibrato,float randomness,bool fadeOut) | 使物体局部位置发生旋转抖动 |
DOShakeScale(float duration,float/Vector3 strength,int vibrato,float randomness,bool fadeOut) | 使物体局部尺寸发生缩放抖动 |
Path
方法 | 描述 |
DOPath( Vector3[] waypoints, float duration, PathType pathType, PathMode pathMode, int resolution, Color gizmoColor) | waypoints: 是提供路径上点的坐标,需要按顺序添加进数组 duration:路径动画的整体持续时间 pathType:路径类型(就是点于点之间路径连线的生成方式) 它内部预定义了两种类型 Linear:直线 CatmullRom:曲线 pathModel: 路径模式(用于确定正确的LookAt方向) 它内部定义了四种类型 Ignore:忽略此参数和设置的LookAt参数 Full3D:在3d场景下,代表物体可以看向任何方向 TopDown2D:代表物体只能上下旋转,看向物体 Sidescroller2D:代表物体只能左右旋转看向物体 resolution:路径分辨率,代表路径点之间的曲线由多少个点构成,也就是点越多,曲线就越圆,此参数在直线路径类型下无效 gizmoColor:在Scene视图中,生成的路径曲线的颜色 |
DOLocalPath() |
Blend Tweens 混合动画
方法 | 描述 |
DOBlendableMoveBy(Vector3 by,float duration,bool snapping) | 动画控制一个物体的位置移动,在某种程度上,允许其他的DOBlendableMove动画进行混合工作在同一个目标上,而不是使用多个DOMove时造成干扰。 |
DOBlendableLocalMoveBy() | 混合控制局部位置的动画 |
DOBlendableRotateBy(Vector3 by,float duration,RotateMode mode) | 混合控制一个物体的旋转动画 |
DOBlendableLocalRotateBy(Vector3 by,float duration,RotateMode mode) | 混合控制一个物体的局部位置的旋转动画 |
DOBlendableScaleBy(Vector3 by,float duration) | 混合控制一个物体的缩放动画 |
material
方法 | 描述 |
DOColor(Color to,float duration) | 控制材质中颜色的变化 |
DOColor(Color to,int propertyID,float duration) | |
DOColor(Color to,string propertyID,float duration) | |
DOFade(float to,float duration) | 控制材质中alpha变化 |
DOFade(float to,string property,float duration) | |
DOFade(flaot to,int propertyID,float duration |
1)改变颜色
material.DOColor(Color.black, 2);
2)按照shader的属性名,修改颜色
material.DOColor(Color.clear, "_Color", 2);
3)修改alpha值
material.DOFade(0, 2);
4)颜色渐变
Gradient是unity的渐变编辑器(下面有渐变编辑器的图)
material.DOGradientColor(Gradient, "_Color", 3);
5)改变材质offset的值
material.DOOffset(new Vector2(1, 1), 2);
6)改变提供的shader属性的名称对应的Vector4值
material.DOVector(new Vector4(0, 0, 0, 1), "_Color", 3);
7)颜色混合
跟位置混合动画同理,可以同时执行而不干扰,产生混合在一起的颜色
material.DOBlendableColor(Color.red, "_Color", 3);
Rigidbody
方法 | 描述 |
DOMove(Vector3 to,float duration) | 移动位置到指定位置 |
DOMoveX/DOMoveY/DOMoveZ(float to,float duration) | 在x/y/z轴方向上移动距离 |
DOJump(Vector3 endValue,float jumpPower,int numJumps,float duration,bool snapping) | endValue 最终要跳跃到的位置 jumpPower 跳跃的强度,决定跳跃的高度(当前位置Y加上该值) numJumps 跳跃的次数 duration 总持续时间 |
DORotate(Vector3 to,float duration,RotateMode mode) | to 旋转目标值 duration 旋转用时 RotateMode Fast 旋转采用最短路线,切旋转不会超过360° FastBeyond360 旋转将超过360° WorldAxisAdd 类似于使用transform.Rotate(new Vector3(20, 0, 0),Space.World),最终值始终被视为相对值 LocalAxisAdd 类似于使用transform.Rotate(new Vector3(20, 0, 0),Space.Self),最终值始终被视为相对值 |
DOLookAt(Vector3 towards,float duration,AxisConstraint axisConstraint,Vector3 up) | 旋转目标使其朝向指定位置 towards 朝向目标位置 duration 旋转总用时 axisConstraint 只旋转此轴 up 定义向上方向的向量 |
Rigidbody 2D
DOMove(Vector2 to,float duration) | 移动位置到指定位置 |
DOMoveX/DOMoveY/DOMoveZ(float to,float duration) | 在x/y/z轴方向上移动距离 |
DOJump(Vector2 endValue,float jumpPower,int numJumps,float duration,bool snapping) | endValue 最终要跳跃到的位置 jumpPower 跳跃的强度,决定跳跃的高度(当前位置Y加上该值) numJumps 跳跃的次数 duration 总持续时间 |
DORotate(float toAngle,float duration) |
Camera
方法 | 描述 |
DOAspect(float to,float duration) | 改变相机的宽高比 |
DOColor(Color to,float duration) | 改变相机的背景颜色 |
DOFieldOfView(float to,float duration) | 改变相机视野Field Of View(1~179) |
DOShakePosition(float duration,float/Vector3 strength,int vibrato,float randomness,bool fadeOut) | 实现相机抖动 |
DOShakeRotation(float duration,float/Vector3 strength,int vibrato,float randomness,bool,fadeOut) | 实现相机旋转形式的的抖动 |
DOOrthoSize(float to,float duration) | 实现在正交视角下,控制相机事业大小 |
DONearClipPlane(float to,float duration) | 改变相机的近从裁剪平面 |
Light
方法 | 描述 |
DOColor(Color to,float duration) | 在duration时间内,将光源的颜色改为to |
DOIntensity(float to,float duration) | 在duration时间内,将光源强度改为to |
DOShadowStrength(float to,float duration) | 改变阴影强度为to(0~1) |
DOBlendableColor(Color to,float duration) | 混合改变灯光颜色动画 |
Audio
方法 | 描述 |
DOFade(float to,float duration) | 控制Audiosource的音量大小 |
DOPitch(float to,float duration) | 控制Audiosource的音调大小 |
Sequence
序列动画
方法 | 描述 |
Sequence mySequence=DOTween.Sequence(); | 声明一个序列 |
Append() | 在序列末尾添加补间动画 |
AppendInterval(float interval) | 暂停interval的时间 |
Insert(float atPosition,Tween tween) | 在给定的时间位置插入给定的补间,从而允许您重叠补间,而不是一个接一个地放置它们。 |
Join(Tween tween) | 加入一个动画,将会和上一个补间动画同时进行 |
AppendCallback(function) | 在序列中添加一个回调函数 |
InsertCallback(float atPosition,function) | 在指定时间节点添加回调函数 |
Sequence sq = DOTween.Sequence();
sq.Append(cube.transform.DOMoveY(3, 2));
sq.AppendCallback(Speak);
sq.Join(cube.transform.DORotate(new Vector3(0, 180, 0), 2f));
sq.AppendCallback(Pause);
sq.AppendInterval(1);
sq.Append(cube.transform.DOScale(2, 2));
sq.InsertCallback(7, Scale);
sq.Insert(0, cube.transform.DOMoveX(3, 2));
Loop
方法 | 描述 |
SetLoops(int loops,LoopType loopType) | 设置循环 Loops 循环次数 设置为-1时为无线循环 LoopType LoopType.Restart:当一次循环结束时,就会重新回到原点 LoopType.Yoyo:溜溜球来回效果 LoopType.Incremental:完成一次循环操作后,在当前状态基础上继续表现补间动画。 |
Ease
过渡效果预览:
回调
方法 | 描述 |
OnComplete | 动画完全结束后调用 |
OnStepComplete | 完成单个循环后调用 例如一个动画使用SetLoops循环3次,那么该回调会调用3次 |
OnPlay | 每次从暂停状态恢复播放时调用 |
OnPause | 当状态从播放变为暂停时调用 |
OnUpdate | 补间动画更新的每帧调用 |
OnStart | 开始时调用,与OnPlay有所不同.不会因为暂停开始而调用,只会调用一次 |