江西建设单位网站,wordpress找回密码页面,下载建程网,企业所得税怎么征收比例1、DoTween是什么#xff1f; DoTween是一款对象动画类插件#xff0c;它是一款针对Unity 3D编辑器的、快速高效的、安全的、面向对象的补间动画引擎#xff0c;并且对C#语言开发做出了很多的优化。另外#xff0c;它使得开发者无需通过Unity内置的Animator或Coroutines即可…1、DoTween是什么 DoTween是一款对象动画类插件它是一款针对Unity 3D编辑器的、快速高效的、安全的、面向对象的补间动画引擎并且对C#语言开发做出了很多的优化。另外它使得开发者无需通过Unity内置的Animator或Coroutines即可创建流畅、灵活的动画效果。 2、下载插件
在Asset Store中下载DoTween的插件 下载并import完成后会在Assets/Plugins目录下Demigiant目录 同时界面也会出现DOTween Utility Panel 点击Setup DoTween...跳转到另一个页面以下是DOTween的设置面板。 点击Apply后即可退出。 3、第一个Demo
首先在场景中创建一个ball可以使用任何图像代替ball如下图所示 编写代码实现ball在x轴的平移
using UnityEngine;
using DG.Tweening;public class GameManager : MonoBehaviour
{public GameObject ballObj;// Start is called before the first frame updatevoid Start(){ballObj.transform.DOMoveX(transform.position.x 300, 2);}}
注意
1如果使用DoTween需要引入using DG.Tweening;
2一般是在物体的transform上使用DoTween的api方法 4、接口概述
DoTween包括Tweener补间控制值并为其生成动画、Sequence序列控制多个补间作为组来处理、Tween通用词表示补间和序列、NestedTween嵌套补间序列中包含的补间四种命名法。
以DO开头的方法设置动画的方法
以Set开头的方法设置动画属性的方法
以On开头的方法设置动画的回调函数 5、Unity常用组件拓展方法
5.1 Transform位置拓展方法
5.1.1 Position-位移
DOMove移动到某一指定点。(世界坐标)
DOLocalMove移动自身坐标到指定位置。
transform.DOMove(new Vector3(10, 0, 0), 10, false);
transform.DOLocalMove(new Vector3(10,0.5f,0),10f,false);
参数Vector3 to 要移动到的位置float duration 所需要花费的时间bool snapping 为true时平滑地将所有值变为整数。DOMoveX / DOMoveY / DOMoveZ沿着某一轴移动到指定位置。
DOLocalMoveX / DOLocalMoveY / DOLocalMoveZ移动自身坐标到指定轴的指定位置。
transform.DOMoveX()/DOMoveY()/DOMoveZ(10, 10f,false);
transform.DOLocalMoveX()/DOLocalMoveY()/DOLocalMoveZ(10, 10f,false);
参数:float to 要移动到的轴的坐标float duration 所需要花费的时间bool snapping 为true时平滑地将所有值变为整数。DOJump实现跳跃到指定位置。(世界坐标)
DOLocalJump实现跳跃到指定位置自身坐标。
transform.DOJump(new Vector3(10, 0, 0),10,3,10,false);
transform.DOLocalJump(new Vector3(10, 0, 0),10,3,10,false);
参数Vector3 endValue 最终要跳跃到的位置float jumpPower 跳跃的强度决定跳跃的高度(当前位置Y加上该值)int numJumps 跳跃的次数float duration 总持续时间bool snapping 为true时平滑地将所有值变为整数。(每次移动整数值)默认为false5.1.2 Rotation-旋转
DORotate旋转到指定的值根据欧拉角。
DOLocalRotate自身坐标旋转。
transform.DORotate(new Vector3(0, 90, 0), 2);
transform.DOLocalRotate(new Vector3(0, 90, 0), 2);
参数Vector3 to 旋转目标值float 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)最终值始终被视为相对值transform.DORotateQuaternion();DOLookAt旋转目标使其朝向给定位置。
transform.DOLookAt(new Vector3(0, 0, 0), 2);
参数Vector3 towards 旋转目标值float duration 旋转总用时AxisConstraint axisConstraint 旋转最终轴约束只旋转此轴Vector3 up 定义向上方向的矢量5.1.3 Scale-缩放
DOScale
transform.DOScale(new Vector3(2, 2, 2), 2);
参数float/Vector3 to 浮点数为倍数向量为指定大小float duration 放大/缩小总消耗时间DOScaleX / DOScaleY / DOScaleZ对某一轴方向进行放大缩小
transform.DOScaleX(3, 2);
参数float to 放大到的倍数float duration 放大/缩小总消耗时间5.1.4 Punch-物体颤动及振动
DOPunchPosition受到冲击后的回弹效果
DOPunchRotation受到冲击后旋转效果
DOPunchScale实现一个弹性效果反复弹最终复原。 //第一个参数 punch表示方向及强度//第二个参数 duration表示动画持续时间//第三个参数 vibrato震动次数//第四个参数 elascity: 这个值是0到1的// 当为0时就是在起始点到目标点之间运动// 不为0时会把你赋的值乘上一个参数作为你运动方向反方向的点物体在这个点和目标点之间运动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);5.1.5 Shake //参数持续时间力量震动随机性淡出 //参数1.持续时间 //参数2.方向的力大小 实际就是震动的幅度,可以理解成相机施加的力的大小 使用Vector3可以选择每个轴向不同的强度 //参数3.震动次数 //参数4.震动角度范围 改变震动方向的随机值大小0~180//参数5.是否淡入淡出 就是运动最后是否缓慢移动回到原本位置 transform.DOShakePosition(1, 5, 10, 50, true);transform.DOShakeRotation(3);transform.DOShakeScale(3);
5.2 Text拓展方法 text.DOColor(Color.black, 2);//颜色2秒钟完成颜色变化text.DOFade(0, 2);//透明text.DOBlendableColor(Color.black, 2);//混合颜色//是把第一个参数传入的内容按照时间一个字一个字的输入到文本框中text.DOText(Hello World, 3); text.DOText(Hello World, 3).SetEase(Ease.Linear); //匀速5.3 Ease.某种运动曲线
运动曲线用来调节运动速度的变化 如果需要匀速的动画速度的话可以选择linear 下面是一部分曲线的图示 6、DoTween常用方法
6.1 Sequence方法
6.1.1 Append
Sequence sequence DOTween.Sequence();
sequence.Append(transform.DOMove(Vector3.one, 3));//物体先3秒移动到111
sequence.AppendInterval(1);//然后在111停止运动1秒
sequence.Append(transform.DOMove(-Vector3.one , 2));//接着2秒时间运动到-1-1-1
6.1.2 Insert
//按时间点插入动画——Insert
//第一个参数为时间此方法把动画插入到规定的时间点
//以这句话为例它把DORotate动画添加到此队列的0秒时执行虽然它不是最先添加进队列的
sequence.Append(transform.DOMove(Vector3.one, 3));//物体3秒移动到111
sequence.Insert(0, transform.DOMove(-Vector3.one, 2));//覆盖掉0到2秒的时间执行物体移动到-1-1-1的动画
sequence.Insert(0, transform.DOScale(Vector3.one*2, 2));//0到2秒的时间执行物体缩放到222的动画
sequence.Insert(4, transform.DOMove(Vector3.one * (3), 2));
//最终效果
//0s-2s移动到-1-1-1并缩放到222
//2s-3s从2/32/32/3移动到111
//tip中间111到2/32/32/3会直接跳过去总时长不变;
//然后3s-4s不动4-6移动到3336.1.3 Prepend
//预添加动画——Prepend//预添加 会直接添加动画到Append的前面也就是最开始的时候quence.Prepend(transform.DOScale(Vector3.one * 0.5f, 1));//这里需要特别说一下预添加的执行顺序问题//它这里也采取了队列的性质不过预添加与原本的的队列相比是一个反向队列quence.Append(transform.DOMove(Vector3.one, 2));quence.Prepend(transform.DOMove(-Vector3.one * 2, 2));quence.PrependInterval(1);//执行顺序是 PrependInterval----Prepend---- - Append//就是最后添加的会在队列的最顶端//预添加时间间隔quence.PrependInterval(1);6.1.4 sequence的回调函数
//回调函数
quence.InsertCallback(2, () { Debug.Log(在2秒处插入了回调); });//在规定的时间点加入回调
quence.PrependCallback(() { Debug.Log(在序列开始添加了回调); });//在序列开始添加了回调
quence.AppendCallback(() { Debug.Log(在序列末尾添加了回调); });//在序列末尾添加了回调
6.2 Set方法
6.2.1 方法列表
SetLoops设置动画循环
SetAs设置参数
SetAutoKill设置自动杀死动画
SetDelay设置动画延时
SetSpeedBased设置动画运动以速度为基准
SetId设置动画ID
SetRecyclable设置是否可回收
SetUpdate设置动画的帧函数
6.2.2 参数说明
1循环方式
Restart 重新开始,为每次执行完毕后会返回原点Yoyo 从起始点运动到目标点再从目标点运动回来这样循环Incremental 一直向着运动方向运动,为递增会朝着目标方向不返回的前进指定次数
2TweenParams
参数类多用于多动画统一设置
6.2.3 示例
//设置动画循环
//参数1.循环次数(-1表示无限循环)
//参数2.循环方式//——Restart 重新开始,为每次执行完毕后会返回原点//——Yoyo 从起始点运动到目标点再从目标点运动回来这样循环//——Incremental 一直向着运动方向运动,为递增会朝着目标方向不返回的前进指定次数
transform.DOMove(Vector3.one, 1).SetLoops(3, LoopType.Yoyo);//定义TweenParams实例多用于多动画统一设置
TweenParams tweenParams new TweenParams();
tweenParams.SetLoops(-1, LoopType.Yoyo);
transform.DOMove(Vector3.one,1).SetAs(tweenParams);//设置参数
transform.DOMove(Vector3.one,1).SetAutoKill(true);//设置自动杀死动画
transform.DOMove(Vector3.one, 2).From(true);//from补间
//为true传入的就是偏移量即当前坐标 传入值 目标值
//为falese传入的就是目标值即传入值 目标值transform.DOMove(Vector3.one, 2).SetDelay(1);//设置动画延时
transform.DOMove(Vector3.one, 1).SetSpeedBased();//设置动画运动以速度为基准
//使用SetSpeedBased时移动方式就变成以速度为基准
//原本表示持续时间的第二个参数就变成表示速度的参数每秒移动的单位数
transform.DOMove(Vector3.one, 2).SetId(Id);//设置动画ID
transform.DOMove(Vector3.one, 2).SetRecyclable(true);//设置是否可回收——为true的话动画播放完会被回收缓存下来不然播完就直接销毁transform.DOMove(Vector3.one, 2).SetRelative(true);//设置动画为增量运动——为true传入的就是偏移量即当前坐标 传入值 目标值、为falese传入的就是目标值即传入值 目标值
transform.DOMove(Vector3.one,2).SetUpdate(UpdateType.Normal, true);//设置动画的帧函数//第一个参数 UpdateType :选择使用的帧函数//——UpdateType.Normal:更新每一帧中更新要求。 //——UpdateType.Late:在LateUpdate调用期间更新每一帧。 //——UpdateType.Fixed:使用FixedUpdate调用进行更新。 //——UpdateType.Manual:通过手动DOTween.ManualUpdate调用进行更新。//第二个参数为TRUE则补间将忽略Unity的Time.timeScale6.3 运动曲线的设置
//调用dotween预设动画曲线来进行直接设置
transform.DOMove(Vector3.one, 3).SetEase(Ease.Linear);//匀速运动到111//使用AnimationCurve动画曲线组件自定义动画曲线的方式进行设置
public AnimationCurve animationCurve;
transform.DOMove(Vector3.one, 4).SetEase(animationCurve);//以自定义曲线设置动画曲线
//AnimationCurve 横轴是时间, 不过不是具体的时间而是时间比例
//AnimationCurve 纵轴是倍数
//假设纵轴的值为v传入DOMove的第一个参数endValue是e起始点坐标是s
//此物体最后动画结束时的实际坐标即为 v * e - ss//以回调函数为参数
transform.DOMove(Vector3.one * 2, 1).SetEase(MyEaseFun);
//返回值是运动距离的百分比 值应为0~1之间最后的值需为1,不然停留的位置不会是目标位置
//自定义函数设置动画曲线private float MyEaseFun(float time,float duration, float overshootOrAmplitude, float period){return time / duration;//匀速的案例-》当前时间/总时间}6.4 回调函数
OnComplete(() { })//动画完成回调
OnStart(() { })//动画开始播放
OnPlay(() { })//动画播放时回调,暂停后重新播放也会调用
OnPause(() { })//动画暂停时回调
OnRewind(() { })//动画回退时回调
OnKill(() { })//动画被销毁时回调
OnStepComplete(() { })//完成单个循环周期时触发
OnUpdate(() { })//帧回调
OnWaypointChange(() { })//在路径动画时改变目标点时的回调参数为当前目标点的下标
transform.DOMove(Vector3.one, 4).OnComplete(() { Debug.Log(动画播放完成); });
transform.DOMove(Vector3.one, 4).OnStart(() { Debug.Log(动画开始播放); });//只在第一次播放动画时调用在play之前调用
transform.DOMove(Vector3.one, 4).OnPlay(() { Debug.Log(动画播放时回调,暂停后重新播放也会调用); });
transform.DOMove(Vector3.one, 4).OnPause(() { Debug.Log(动画暂停播放); });
transform.DOMove(Vector3.one, 4).OnRewind(() { Debug.Log(动画重新播放); });//——使用DORestart重新播放时、使用Rewind倒播动画完成时、使用Rewind倒播动画完成时、 使用DOPlayBackwards反向播放动画完成时
transform.DOMove(Vector3.one, 4).OnKill(() { Debug.Log(动画被销毁时回调); });
transform.DOMove(Vector3.one, 4).OnStepComplete(() { Debug.Log(完成单个循环周期时触发); });
transform.DOMove(Vector3.one, 4).OnUpdate(() { Debug.Log(帧回调); });
transform.DOMove(Vector3.one, 4).OnWaypointChange(() { Debug.Log(在路径动画时改变目标点时的回调参数为当前目标点的下标); }); 6.5 获取数据方法
一、类方法
PausedTweens所有暂停的动画
PausedTweens所有正在播放的动画
TweensById获取给定ID的数组
TweensByTarget返回给定对象的数组
IsTweening判断动画是否在运行
TotalPlayingTweens正在播放的动画数量包含正处于延迟中的动画
二、实例方法
fullPosition动画的位置可读可写
CompletedLoops动画执行完的次数
Delay获取动画的延迟时间
Duration获取动画不包含循环的时长
Elapsed动画已播放的时间
ElapsedPercentage返回动画进度的百分比
IsActive动画是否在活动
IsBackwards是否是反向动画
IsComplete动画是否完成
IsInitialized是否以初始化
IsPlaying是否正在播放
CompletedLoops返回循环次数 无限循环为Infinity
//一、类方法
var list DOTween.PausedTweens();//返回所有暂停的动画没有则返回null
list DOTween.PlayingTweens();//返回所有真正播放的动画没有则返回null
DOTween.TweensById(id, true);//找到id为id并正在播放的动画——第一个参数是动画的ID、第二个参数是是否只收集正在播放的动画——返回满足条件的动画数组
DOTween.TweensByTarget(transform,true);//找到tranforn上正在播放的动画
DOTween.IsTweening(transform);//收集传入的对象是否有动画在活动——第一个参数为检测的对象、第二个参数为是否检测动画在播放状态——为true时给定对象在播放状态时 返回true、为false时只检测给定对象是否有动画在pause状态时也算有则返回true
DOTween.TotalPlayingTweens();//正在播放的动画的总数目前处于延迟播放状态的动画也算//二、实例方法
Tween tween transform.DOMove(Vector3.one, 4).SetLoops(4);
Debug.Log(tween.fullPosition);//获取动画的位置
tween.fullPosition 2;//设置动画的位置
Debug.Log(tween.CompletedLoops());//获取动画已经完成的循环次数从0开始
Debug.Log(tween.Delay());//获取动画的延迟时间
Debug.Log(tween.Duration(false));//获取动画的持续时间——参数为true 表示计算循环的时间无限循环为Infinity
Debug.Log(tween.Elapsed(false));//获取动画不包含循环已经执行完成的时间——参数为true 表示计算循环的时间
Debug.Log(tween.ElapsedPercentage(false));//获取动画不包含循环已经执行完成的时间的百分比——起始点为0 目标点为1——参数为 是否包含循环 为true时 返回值是循环总区间的已用百分比 若为无限循环 返回值为0
Debug.Log(tween.IsActive());//获取动画是否为活动状态
Debug.Log(tween.IsBackwards());//获取动画是否是反向动画
Debug.Log(tween.IsComplete());//获取动画是否完成
Debug.Log(tween.IsInitialized());//获取动画是否以初始化
Debug.Log(tween.IsPlaying());//获取动画是否正在播放
Debug.Log(tween.CompletedLoops());//返回循环次数 无限循环为Infinity6.6 例程方法
WaitForCompletion()等待动画执行完毕后
WaitForElapsedLoops()等待动画执行完3次循环之后
WaitForKill()等待动画销毁
WaitForPosition()等待动画执行到2秒位置
WaitForRewind()等待动画重新开始
WaitForStart()等待动画开始
Tween tween obj.transform.DOMoveX(transform.position.x 200, 3).SetEase(Ease.Linear).SetLoops(3, LoopType.Incremental).OnComplete(() { Debug.Log(第一个动画播放完成); });
StartCoroutine(Func(tween));public IEnumerator Func(Tween tween)
{yield return tween.WaitForCompletion();Debug.Log(Come here!);
}
Tween tween transform.DOMove(Vector3.one, 4).SetLoops(4);
StartCoroutine(Func);
IEnumerator Func()
{yield return tween.WaitForCompletion();//等待动画执行完毕后yield return tween.WaitForElapsedLoops(3);//等待动画执行完3次循环之后——若是传入的次数大于动画的循环次数 则在动画结束时继续执行yield return tween.WaitForKill();//等待动画销毁yield return tween.WaitForPosition(2);//等待动画执行到2秒位置yield return tween.WaitForRewind();//等待动画重新开始yield return tween.WaitForStart();//等待动画开始
}参考文档
Unity插件DOTween_unity dotween插件-CSDN博客
【Unity精品插件】DOTween Pro一行代码动乾坤-CSDN博客