创建一个Tweener
创建一个Tweener
Tweener是DOTween中的最基本对象,类似Unity中的GameObject对象。它们获取属性/字段并将其设置为具有指定值的动画。
到目前为止,DOTween可以处理以下类型的值:float, double, int, uint, long, ulong, Vector2/3/4, Quaternion, Rect, RectOffset, Color, string(这些值中的一些可以以特殊方式补间)
此外,您还可以定制DOTween插件来补间自定义值类型。
创建补间的方法有三种:通用方法、快捷方法和其他通用方法。
第一种:通用方法
这是最灵活的补间方式,允许您在几乎任何值之间进行补间,无论是公共值还是私有值,静态值还是动态值(正如您所知,快捷方式实际上在后台使用通用方式)。
与快捷方式一样,通用方式具有FROM备用版本。只需将a从链到补间,即可使补间的行为与“从补间”而不是“到补间”一样。
static DOTween.To(getter, setter, to, float duration)
将给定属性从其当前值更改为给定值。
getter:一个委托,该委托将属性的值返回到补间。可以写成这样的形式:()=> myValue
其中myValue是要补间的属性的名称。
setter:将属性值设置为补间的委托。可以写成这样的形式:x=> myValue = x
其中myValue是要补间的属性的名称。
to:要达到的最终值。
duration:补间的持续时间。
例子
// Tween a Vector3 called myVector to 3,4,8 in 1 second DOTween.To(()=> myVector, x=> myVector = x, new Vector3(3,4,8), 1); // Tween a float called myFloat to 52 in 1 second DOTween.To(()=> myFloat, x=> myFloat = x, 52, 1);
第二种:快捷方式
DOTween包括一些已知Untiy对象的快捷方式,如Transform, Rigidbody和Material。可以直接从对这些对象的引用开始补间(这也将自动将对象本身设置为补间目标),例如:
transform.DOMove(new Vector3(2,3,4), 1); rigidbody.DOMove(new Vector3(2,3,4), 1); material.DOColor(Color.green, 1);
这些快捷方式中的每一个还具有FROM备用版本,除非另有说明。只需将a从链到补间,即可使补间的行为与“从补间”而不是“到补间”一样。
重要事项:当您将FROM指定给补间时,目标将立即跳转到FROM位置(如“编写该行代码的时刻”,而不是“补间开始的时刻”)。
transform.DOMove(new Vector3(2,3,4), 1).From(); rigidbody.DOMove(new Vector3(2,3,4), 1).From(); material.DOColor(Color.green, 1).From();
第三种:其他通用方法
这些是允许以特定方式补间值的其他通用方法。
除了指定的版本之外,这些版本还有其他版本。只需将a从链到补间,即可使补间的行为与“从补间”而不是“到补间”一样。
static DOTween.Punch(getter, setter, Vector3 direction, float duration, int vibrato, float elasticity)
没有FROM的版本
朝着给定方向冲压一个Vector3值,然后返回到起始位置,就像它通过弹性件连接到起始位置一样。
getter:将属性值传回补间的委托。可以写成这样的形式: ()=> myValue
其中myValue是要补间的属性的名称。
setter:将属性值设置为补间的委托。可以写成这样的形式: x=> myValue = x
其中myValue是要补间的属性的名称。
direction:冲压的方向和强度。
duration:持续时间.
vibrato:指示冲头将振动多少,
弹性表示向后反弹时向量超出起始位置的程度( 0到1 )。1在方向和相反衰减方向之间产生完全振荡,而0仅在开始位置和衰减方向之间振荡。
// Punch upwards a Vector3 called myVector in 1 second DOTween.Punch(()=> myVector, x=> myVector = x, Vector3.up, 1);
static DOTween.Shake(getter, setter, float duration, float/Vector3 strength, int vibrato, float randomness, bool ignoreZAxis)
没有FROM的版本
使用指定值在Vector3对象的x和y轴方向摇动
getter:将属性值传回补间的委派。可以写成这样: ()=> myValue
其中myValue是要补间的属性的名称。
setter:将属性值设置为补间的委托。可以写成这样: x=> myValue = x
其中myValue是要补间的属性的名称。
duration:持续时间
strength:摇动的强度
vibrato 表示震动的次数,
randomness 指示抖动的随机程度( 0到360 -值高于90种吸量,请注意)。将其设置为0将沿单个方向摇动,表现为随机打孔。
ignoreZAxis 如果TRUE仅沿X Y轴摇动(如果使用Vector3表示强度,则不可用)。
// Shake a Vector3 called myVector in 1 second DOTween.Shake(()=> myVector, x=> myVector = x, 1, 5, 10, 45, false);
static DOTween.ToAlpha(getter, setter, float to, float duration)
将颜色从当前值补间到给定的alpha值。
getter:将属性值传回补间的委派。可以写成这样: ()=> myValue
其中myValue是要补间的属性的名称。
setter:将属性值设置为补间的委托。可以写成这样: x=> myValue = x
其中myValue是要补间的属性的名称。
to:最终值.
duration:持续时间.
// Tween the alpha of a color called myColor to 0 in 1 second DOTween.ToAlpha(()=> myColor, x=> myColor = x, 0, 1);
static DOTween.ToArray(getter, setter, float to, float duration)
没有FROM的版本
创建到最终值的补间动画. 每个部分之间的应用都是独立的,而不是整体的
getter:将属性值传回补间的委派。可以写成这样: ()=> myValue
其中myValue是要补间的属性的名称。
setter:将属性值设置为补间的委托。可以写成这样: x=> myValue = x
其中myValue是要补间的属性的名称。
endValues 每个段要达到的结束值。此数组的长度必须与持续时间相同。
durations 持续时间
例子
// Tween a Vector3 between 3 values, for 1 second each Vector3[] endValues = new[] { new Vector3(1,0,1), new Vector3(2,0,2), new Vector3(1,4,1) }; float[] durations = new[] { 1, 1, 1 }; DOTween.ToArray(()=> myVector, x=> myVector = x, endValues, durations);
static DOTween.ToAxis(getter, setter, float to, float duration, AxisConstraint axis)
将Vector3的单个轴从其当前值补间到给定轴。
getter:将属性值传回补间的委派。可以写成这样: ()=> myValue
其中myValue是要补间的属性的名称。
setter:将属性值设置为补间的委托。可以写成这样: x=> myValue = x
其中myValue是要补间的属性的名称。
to:目的值.
duration:持续时间.
axis 要补间的轴。
// Tween the X of a Vector3 called myVector to 3 in 1 second DOTween.ToAxis(()=> myVector, x=> myVector = x, 3, 1); // Same as above, but tween the Y axis DOTween.ToAxis(()=> myVector, x=> myVector = x, 3, 1, AxisConstraint.Y);
虚拟Tween
static DOTween.To(setter, float startValue, float endValue, float duration)
将虚拟属性从给定的开始值补间到给定的结束值,并实现一个setter,该setter允许将该值与外部方法或lambda一起使用。
setter:要使用补间值执行的操作。
startValue:要开始的值。
endValue:要达到的值。
duration:持续时间
DOTween.To(MyMethod, 0, 12, 0.5f); // Where MyMethod is a function that accepts a float parameter // (which will be the result of the virtual tween) // Alternatively, with a lambda DOTween.To(x => someProperty = x, 0, 12, 0.5f);