DOKill
表示停止该物体上所有的Tween动画。DOTween
可以同时运行多个Tween
,如果需要停止所有正在运行的Tween
,可以使用这个方法;还有一种使用场景,即反复打开某一视图,而该视图存在显示动画,如果不先杀死原有动画再执行显示动画可能会导致显示错误、报错;
transform.DOKill();
默认情况下,Tween 在
FixedUpdate
中更新,可以使用SetUpdate(true)
将其更改为在Update
中更新。
示例:
tween.SetUpdate(true);
通过调用
Play()
方法,可以让Tween
动画开始播放。如果Tween
动画处于暂停、结束状态,也可以通过调用Play()
方法将其恢复播放。需要注意的是,如果Tween
动画已经处于播放状态,再次调用Play()
方法不会产生任何效果。
示例:
tween.Play();
通过调用
Pause()
方法,可以让Tween
动画暂停播放;
示例:
tween.Pause();
切换
Tween
动画的暂停状态。如果Tween
正在播放,则暂停它;如果Tween
已暂停,则继续播放它。
示例:
tween.TogglePause();
重新启动
Tween
动画,将其重置到初始状态并重新播放。
示例:
tween.Restart();
立即完成
Tween
动画,并将Tween
对象移动到结束位置。
示例:
tween.Complete();
倒回
Tween
动画,将Tween
对象返回到开始位置。
示例:
tween.Rewind();
动画补间;
参数 :
isRelative
:为true,传入的就是偏移量,即当前坐标 + 传入值 = 目标值,为falese,传入的就是目标值,即传入值 = 目标值
示例:
//2 秒内,移动到原点的 X 坐标偏移 5 的位置
transform.DOMoveX(5f, 2f).From(true).Play();
将
Tween
动画设置为基于速度的模式,在不同的时间间隔内以相同的速度播放,而不是固定的时间间隔。
示例:
// 创建 Tween 对象并设置为基于速度的模式
transform.DOMoveX(5f, 2f).SetSpeedBased(true).Play();
DOTween.To()
用于创建一个Tween
动画,它可以对一个值(如浮点数或颜色)进行补间动画。
示例:
Vector3 targetPosition = new Vector3(10f, 10f, 10f);
float duration = 1f;
//修改的属性:transform.position
//修改的值:targetPosition
//时间:duration
DOTween.To(() => transform.position, x => transform.position = x, targetPosition, duration);
DOMove()
用于将物体平滑地移动到目标位置(世界坐标);DOMoveX()、DOMoveY()、DOMoveZ():与
DOMove()
不同的是这三个方法只对某一条轴线进行移动;
示例:
//在 1 秒内将物体移动到世界坐标(1, 1, 1)的位置
transform.DOMove(new Vector3(1, 1, 1), 1);
//在 1 秒内将物体移动到X轴世界坐标 1 的位置
transform.DOMoveX(1, 1);
DOLocalMove()
用于将物体平滑地移动到目标位置(本地坐标);DOLocalMoveX()、DOLocalMoveY()、DOLocalMoveZ():同样的
DOLocalMove
也可以对每一个轴进行单独操作;
示例:
//在 1 秒内将物体移动到本地坐标(1, 1, 1)的位置
rectTransform.DOLocalMove(new Vector3(1, 1, 1), 1);
//在 1 秒内将物体移动到X轴本地坐标 1 的位置
rectTransform.DOLocalMoveX(1, 1);
DORotate
用于对物体进行欧拉角旋转动画操作。你可以使用它来让物体在指定的时间内平滑地从当前欧拉角旋转到目标欧拉角;DORotateQuaternion
则是用于对物体进行四元数旋转动画操作。与DORotate
不同的是,它接受一个目标旋转的四元数作为参数,可以让你更加灵活地控制物体的旋转变换;
// 使用 DORotate 方法在 2 秒内将物体绕 Y 轴旋转 180 度
transform.DORotate(new Vector3(0, 180, 0), 2f);
// 定义一个目标旋转的四元数
Quaternion targetRotation = Quaternion.Euler(0, 90, 0);
// 使用 DORotateQuaternion 方法在 2 秒内将物体绕 Y 轴旋转 90 度
transform.DORotateQuaternion(targetRotation, 2f);
DOShakePosition
实现对象的震动位移动画效果;
DOShakeRotation
实现对象的震动旋转动画效果;
DOShakeScale
实现对象缩放震动动画效果;参数:
duration
:动画的持续时间,表示从开始到结束所需的时间长度。strength
:震动的强度,表示物体缩放的最大范围。vibrato
:震动的频率,表示物体缩放的次数。randomness
:随机性,可以增加震动的不规则性,表示每次震动缩放的大小在 -randomness 到 randomness 之间。snapping
:是否启用对齐到像素网格,设置为true
可以使缩放更加流畅。
示例:
// 使对象在持续时间为 1 秒的动画中进行震动位移,位移的强度为 (10, 10, 10),位移的次数为 10 次,每次震动的位移随机在 -180 到 180 之间
transform.DOShakePosition(1f, new Vector3(10, 10, 10), 10, 180, false);
DOText
方法可以应用于 Text 组件,以在给定的持续时间内逐步改变文本的内容。它接受以下参数:
text
:目标文本,即最终要显示的文本。
duration
:动画的持续时间,即文本逐步改变的时间长度。
richTextEnabled
:指定是否启用富文本支持,如果启用,则可以使用 HTML 标签来设置文本样式。
scrambleMode
:混淆模式,表示文本逐步改变时的动画效果,可以是 None、All、Uppercase、Lowercase 或 Numerals。
ScrambleMode.None
:不进行混淆,文本逐步改变时保持原样。这是默认的混淆模式。
ScrambleMode.All
:所有字符都会被随机顺序地混淆,然后逐步改变为目标文本。
ScrambleMode.Uppercase
:所有字母字符(a-z)都会被随机顺序地混淆,然后逐步改变为目标文本中对应的大写字母。
ScrambleMode.Lowercase
:所有字母字符(A-Z)都会被随机顺序地混淆,然后逐步改变为目标文本中对应的小写字母。
ScrambleMode.Numerals
:所有数字字符(0-9)都会被随机顺序地混淆,然后逐步改变为目标文本中对应的数字。
scrambleEase
:混淆缓动,表示混淆模式的动画缓动类型;
scrambleEaseOvershoot
:用于调整混淆动画的缓动超调量参数。缓动超调量控制了在动画过程中的缓动效果是否超过了目标值,从而产生一种超过目标值后再回到目标值的弹簧效果。缓动超调量为正数时,会导致动画在结束时超过目标值然后回弹;而缓动超调量为负数时,会导致动画在结束时稍微低于目标值然后回弹;
scrambleEasePeriod
:用于控制字符混淆过程中混淆效果的缓动周期的参数。缓动周期可以影响混淆效果的变化速度和流畅度,从而影响混淆动画的视觉效果。scrambleEasePeriod
的值为正数时,会使混淆效果在一定的周期内进行振荡,变化很快,但是相对比较流畅;而scrambleEasePeriod
的值为负数时,会使混淆效果在振荡的同时反向进行。这样会导致混淆效果变化的速度变慢,但是更加自然;
示例:
//text文本逐字地显示 "Hello",持续时间为 2 秒,使用了乱序显示的方式,使用了 Sine 缓动函数,表示逐渐加速然后减速,乱序显示的缓动振幅为 0.5,乱序显示的缓动周期为 -0.5
myText.DOText("Hello",2f,true,ScrambleMode.Uppercase,Ease.InOutSine,scrambleEaseOvershoot: 0.5f, scrambleEasePeriod: -0.5f);
用于对各种具有颜色属性的 Unity 组件进行颜色变化;
示例:
//在 1 秒内从当前颜色渐变到红色
myImage.DOColor(Color.red, 1f);
用于对具有透明度属性的对象进行透明度设置;
示例:
//在 1 秒内使 myImage 的透明度从当前值渐变到 0.5
myImage.DOFade(0.5f, 1f);
用于控制对象的缩放变化;
DOScaleX、DOScaleY、DOScaleZ:对某一个轴向进行缩放;
示例:
//一秒内将物体缩放至 2 倍
transform.DOScale(new Vector3(2f, 2f, 2f), 1f);
//一秒内将物体 X 轴方向缩放至 2 倍
transform.DOScaleX(2, 1f);
用于控制对象在本地坐标的缩放变化;
DOLocalScaleX、DOLocalScaleY、DOLocalScaleZ:对某一个轴向进行缩放;
示例:
//本地坐标中,一秒内将物体缩放至 2 倍
transform.DOLocalScale(new Vector3(2f, 2f, 2f), 1f);
//本地坐标中,一秒内将物体 X 轴方向缩放至 2 倍
transform.DOLocalScaleX(2, 1f);
让对象的 z 轴正方向指向目标点
示例:
//在 2 秒内,平滑的让自身的 z 轴正方向指向目标点
transform.DOLookAt(obj.tranform, 2);
实现渐变颜色动画效果;
参数说明如下:
gradient
:定义了渐变颜色的Gradient
对象。
property
:指定要改变颜色的属性名称。通常是材质的属性名称,比如"_Color"、"_EmissionColor"
等。duration
:动画的持续时间,表示从开始到结束所需的时间长度。
示例:
//2 秒内将对象的材质颜色从红色渐变到蓝色
Material material = GetComponent().material;
Gradient gradient = new Gradient();
gradient.SetKeys(
new GradientColorKey[] { new GradientColorKey(Color.red, 0f), new GradientColorKey(Color.blue, 1f) },
new GradientAlphaKey[] { new GradientAlphaKey(1f, 0f), new GradientAlphaKey(1f, 1f) }
);
material.DOGradientColor(gradient, "_Color", 2f);
带
Blend
名称的方法,允许混合动画,值得注意的是Blend
是增量动画;
DOBlendableMoveBy
:与DOMove
作用类似,实现移动动画;
DOBlendableRotateBy
:与DORotate
作用类似,实现移动动画;
DOBlendableScaleBys
:与DOScale
作用类似,实现移动动画;
示例:
//假设原点坐标为(0,0,0),在 1 秒内移动到坐标(2,2,2)的位置
transform.DOBlendableMoveBy(new Vector3(1, 1, 1), 1);
transform.DOBlendableMoveBy(new Vector3(1, 1, 1), 1);
下一章 【Unity DOTween插件常用方法(二)】