开发学院

您的位置:首页>教程>正文

教程正文

创建一个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);