Dotween是unity里非常常用的插件,但是很多人应该没有仔细的阅读过它的api,它实际有很多好用的方法,下面我就针对一些相对常用的方法,做下总结:

Dotween常用方法详解-CSDN博客

Transform拓展方法

1) Position

1)改变世界坐标

移动方法,第一个参数是要移动到的目标点,不是移动这个向量的距离。

1
transform.DOMove(new Vector3(1, 1, 1), 2);

只控制x轴上的移动,其他两个方向同理。

1
transform.DOMoveX(1, 2);

2)改变局部坐标

1
2
transform.DOLocalMove(new Vector3(1, 1, 1), 2);
transform.DOLocalMoveX(1, 2);

2) Rotation

1)世界旋转

旋转到给定的值,改变的是欧拉角。

1
transform.DORotate(new Vector3(0, 90, 0), 2);

旋转到给定的值,改变的是四元数。

1
transform.DORotateQuaternion(new Quaternion(0.1f, 0.1f, 0.1f, 0.1f), 2);

2)局部旋转

旋转到给定的值,改变的是欧拉角。

1
transform.DOLocalRotate(new Vector3(0, 90, 0), 2);

旋转到给定的值,改变的是四元数。

1
transform.DOLocalRotateQuaternion(new Quaternion(0.1f, 0.1f, 0.1f, 0.1f), 2);

在给定时间内,平滑的让自身的z轴正方向指向目标点。

1
transform.DOLookAt(new Vector3(0, 0, 0), 2);

3) Scale

同上面一样,这里改变物体的缩放到目标值。

1
transform.DOScale(new Vector3(2, 2, 2), 2);

其他两个轴向同理。

1
transform.DOScaleX(3, 2);

4) Punch

第一个参数 punch:表示方向及强度。
第二个参数 duration:表示动画持续时间。
第三个参数 vibrato:震动次数。
第四个参数 elascity: 这个值是0到1的。
当为0时,就是在起始点到目标点之间运动。
不为0时,会把你赋的值乘上一个参数,作为你运动方向反方向的点,物体在这个点和目标点之间运动。

1
2
3
transform.DOPunchPosition(new Vector3(0, 1, 0), 2, 2, 0.1f);
transform.DOPunchRotation(new Vector3(0, 90, 0), 2, 2, 0.1f);
transform.DOPunchScale(new Vector3(2, 2, 2), 2, 2, 0.1f);

以position为例,elascity的取值是 0 到 1 的。
elascity为0时,物体就在起始点和目标点之间运动。
elascity不为0时,会自动计算,产生一个反向点,数值越大方向点离的越远。

5)Shake

参数:持续时间,力量,震动,随机性,淡出。
力量:实际就是震动的幅度,可以理解成相机施加的力的大小 使用Vector3可以选择每个轴向不同的强度。
震动:震动次数。
随机性:改变震动方向的随机值(大小:0~180)。
淡出:就是运动最后是否缓慢移动回到原本位置。

1
2
3
transform.DOShakePosition(1, 5, 10, 50, true);
transform.DOShakeRotation(3);
transform.DOShakeScale(3);

6)Blend

带Blend名称的方法,允许混合动画。
原本同时执行两个Move方法,只会执行最新的一个动画命令。
例如:

1
2
transform.DOMove(Vector3.one, 2);
transform.DOMove(Vector3.one * 2, 2);

结果是物体运动到了(2,2,2)坐标上。

DOBlendableMoveBy方法有两个特点:
1)允许多个同时执行。
例如:

1
2
transform.DOBlendableMoveBy(new Vector3(1, 1, 1), 1);
transform.DOBlendableMoveBy(new Vector3(-1, 0, 0), 1);

假设其实点为(0,0,0),最后动画停止时的坐标就是(0,1,1)。
2)它是增量动画。

1
transform.DOBlendableMoveBy(new Vector3(1, 1, 1), 1);

假设其实点为(1,1,1),最后动画停止时的坐标就是(2,2,2)。
它的参数不是目标点,而是要移动的量。

以下三个函数同理:

1
2
3
transform.DOBlendableRotateBy()
transform.DOBlendableScaleBy()
transform.DOBlendablePunchRotation()

Camera拓展方法

1)调整屏幕视角的宽高比

第一个参数是宽高的比值。

1
camera.DOAspect(0.6f, 2);

2)改变相机background参数的颜色

1
camera.DOColor(Color.blue, 2);

3)改变相机近切面的值

1
camera.DONearClipPlane(200, 2);

4)改变相机远切面的值

1
camera.DOFarClipPlane(2000, 2);

5)改变相机FOV的值

1
camera.DOFieldOfView(30, 2);

6)改变相机正交大小

1
camera.DOOrthoSize(10, 2);

7)按照屏幕像素计算的显示范围

1
camera.DOPixelRect(new Rect(0f, 0f, 600f, 500f), 2);

8)按照屏幕百分比计算的显示范围

1
camera.DORect(new Rect(0.5f, 0.5f, 0.5f, 0.5f), 2);

9)相机震动

相机震动效果 参数:持续时间,力量,震动,随机性,淡出。
力量:实际就是震动的幅度,可以理解成相机施加的力的大小 使用Vector3可以选择每个轴向不同的强度。
震动:震动次数。
随机性:改变震动方向的随机值(大小:0~180)。
淡出:就是运动最后是否缓慢移动回到原本位置。

1
camera.DOShakePosition(1, 10, 10, 50, false);

Material拓展方法

1)改变颜色

1
material.DOColor(Color.black, 2);

2)按照shader的属性名,修改颜色

1
material.DOColor(Color.clear, "_Color", 2);

3)修改alpha值

1
material.DOFade(0, 2);

4)颜色渐变

Gradient是unity的渐变编辑器(下面有渐变编辑器的图)。

1
material.DOGradientColor(Gradient, "_Color", 3);

5)改变材质offset的值

1
material.DOOffset(new Vector2(1, 1), 2);

6)改变提供的shader属性的名称对应的Vector4值

1
material.DOVector(new Vector4(0, 0, 0, 1), "_Color", 3);

7)颜色混合

跟位置混合动画同理,可以同时执行而不干扰,产生混合在一起的颜色。

1
material.DOBlendableColor(Color.red, "_Color", 3);

Text拓展方法

头三个都是常规方法,不多介绍了。

1
2
3
text.DOColor(Color.black, 2);
text.DOFade(0, 2);
text.DOBlendableColor(Color.black, 2);

这个方法比较有意思,是把第一个参数传入的内容按照时间,一个字一个字的输入到文本框中。

1
text.DOText("context", 2);

```