material.DOGradientColor()
material.DOGradientColor()
material.DOFade(0,2);
只有Shader里有_Color属性,才可以通过material.color对物体的颜色进行改变
material.DOColor(color.red,"_TintColor",2);
通过这种方式,可以找到Shader中的Color属性
或者
material.SetColor
Blender是一个增量播放动画
和DOMove不同的是,Blendable会在目标点的位置做一个增量
+
* SetOptions画的圈是否是闭合的
* true完整的回路
* SetOptions(true,AxisConstraint.Z).
* AxisConstraint轴向枚举 锁定轴 会变成单方面运动
* --AxisConstraint.None取消锁定
*
* 锁定旋转
* AxisConstraint.Y
* 跟上面一样,只是参数的传递位置不一样
*
不要复制之前cube物体
挂载脚本lee,会跟着运动一起运动
=-=
/**路径动画—位置参数
* DOPath局部 DoLocalPath
* 实现可视化操作
* 公有字段,保存点
* public Transform[] PointList;
*
* 简便获取数组的参数
* 1.位置
* 2.持续时间
* 3.运动曲线
* PathType.Linear直线运动
* PathType.CatmullRom 曲线运动
*
* 4.LookAt朝向PathMode.Full3D
* 参数
* Ignord=0 会忽略lookAt
* Full3D=1 常规的3D效果 相当于没有限制的lookAt
* TopDown2D=2 朝向只能上下的改变
* Sidescroller2D=3 朝向只能左右的改变
*
* 5.分辨率 50
* 0-100 消耗性能逐渐高
*
* 6.路径颜色Color.blue
* 默认白色
*
*/
//Vector3[] positons = PointList.Select(u=>u.position).ToArray();
//Vector3[] positons = new Vector3[] { new Vector3(0,0,0), new Vector3(2, 0, 0), new Vector3(0, 0, -2), new Vector3(2, 0, -2) };
//ositons[2] = new Vector3();
var positons = PointList.Select(u => u.position).ToArray();
transform.DOPath(positons, 2, PathType.CatmullRom,PathMode.Full3D,50,Color.red);
//版本需要升级到 C# 5 Task.Delay(TimeSpan.FromSeconds(1f));
tweer.Delay();//动画延迟
/**
* 硬编码
* if(time=5){}
*
* 对于项目的稳定性很差
*/
tweer.Duration();//持续时间 infinity无限循环
var list=DOTween.TweensByTarget(transform,true);
//收集正在播放的动画(缓存值中)
//list为空的话,是直接不占内存
//获取当前正在播放的动画 延迟状态也是正在播放当中的
var list1 = DOTween.TotalPlayingTweens();
var list=DOTween.TweensByTarget(transform,true);//收集正在播放的动画(缓存值中)
C#语法糖
OnComplete(() => { })
值 > 0时,为活动范围的衰减值,活动范围会由大变小
值 = 0时,就是均匀的在起始坐标和目标坐标之间运动
值 < 0时,会施加一个向目标坐标的一个力,活动范围一点点增大,最后逼近目标点
这两个参数只对Flash, InFlash, OutFlash, InOutFlash这四种曲线有用,其他的曲线起作用的就只有Ease枚举参数
(3) Ease 运动曲线的设置
1)以Ease枚举作为参数
例如:
transform.DOMove(Vector3.one, 2).SetEase(Ease.Flash, 3, 0f);
第二个参数 Amplitude(振幅):实际就是移动次数,起始点移动到目标算移动一次,再移动回来移动两次
第三个参数 period 值的范围是 - 1~1
值 > 0时,为活动范围的衰减值,活动范围会由大变小
值 = 0时,就是均匀的在起始坐标和目标坐标之间运动
值 < 0时,会施加一个向目标坐标的一个力,活动范围一点点增大,最后逼近目标点
这两个参数只对Flash, InFlash, OutFlash, InOutFlash这四种曲线有用,其他的曲线起作用的就只有Ease枚举参数
2)使用AnimationCurve当作参数
例如:
transform.DOMove(Vector3.one * 2, 1).SetEase(curve);
AnimationCurve 横轴是时间,不过不是具体的时间,而是时间比例
AnimationCurve 纵轴是倍数
假设纵轴的值为v,传入DOMove的第一个参数endValue是e,起始点坐标是s
此物体最后动画结束时的实际坐标即为 v* (e -s)+ s
设置动画的帧函数
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.timeScale
/**24-设置参数—设置ID及设置动画为增量运动
*
*/
//设置动画ID 参数 int string object(不建议使用,设计装箱拆箱)
transform.DOMove(Vector3.one, 2).SetId("Id");
//可以调用静态方法 调用缓存的动画 减少性能
//DOTween.Play("Id");
//是否可回收
transform.DOMove(Vector3.one,3).SetRecyclable(true);
//增量运动 当前坐标 + 传入值 = 目标值
transform.DOMove(Vector3.one, 3).SetRelative(true);
/**23-设置参数—设置延时及以速度为基准的动画
* 延迟了3s才执行
*transform.DOMove(Vector3.one,2).SetDelay(3);
*
*目标点 速度
*transform.DOMove(Vector3.one,3).SetSpeedBased();
*
*参数 true 以速度为基础
*transform.DOMove(Vector3.one,3).SetSpeedBased(true);
*
*false则不是
*
*/
transform.DOMove(Vector3.one, 3).SetSpeedBased(false);
/**设置杀手动画
* 不然,会缓存到DoTween内部数据中
*/
transform.DOMove(Vector3.one, 2).SetLoops(3, LoopType.Incremental).SetAutoKill(true);
//下次直接调用 不会涉及计算
预添加 会直接添加动画到Append的前面,也就是最开始的时候
quence.Prepend(transform.DOScale(Vector3.one * 0.5f, 1));
这里需要特别说一下预添加的执行顺序问题
它这里也采取了队列的性质,不过,预添加与原本的的队列相比是一个反向队列
eg:
Sequence quence = DOTween.Sequence();
quence.Append(transform.DOMove(Vector3.one, 2));
quence.Prepend(transform.DOMove(-Vector3.one*2, 2));
quence.PrependInterval(1);
执行顺序是 PrependInterval----Prepend-----Append
就是最后添加的会在队列的最顶端
/**17-队列—插入动画用法
* 在帧函数中,按顺序执行
* 帧被多次执行,则覆盖之前的帧
*
* 添加到空白动画 比如第8s....
*/
Sequence quence = DOTween.Sequence();
quence.Append(transform.DOMove(Vector3.one, 2));//把一项加入 0-2s
quence.AppendInterval(1);//添加延时1s 2-3s
quence.Append(transform.DOMove(new Vector3(1, 0, 1), 2));//把一项加入 3-5s
quence.Insert(2, transform.DOMove(-Vector3.one, 1));//在0s插入动画