一、Blend
//Blend
//区别于普通move 此方法是在物体原来的位置做相应操作
//混合执行
transform.DOBlendableLocalMoveBy(Vector3.one, 2f);
transform.DOBlendableLocalMoveBy(-Vector3.one * 2, 2f);
//以上语句执行后 物体在-Vector3.one 位置上
transform.DOBlendableLocalRotateBy(Vector3.one, 2f);
//....
二、Materal
//Material
Material material = GetComponent<MeshRenderer>().material;
//颜色
material.DOColor(Color.red, 2f);//默认是材质里的Main color属性
material.DOColor(Color.red, "_Tint", 2f);//在材质里点编译 查看颜色所对应的属性 第二个参数上
material.SetColor("_Tint", Color.green);//material默认的设置颜色 也是传属性名字
//透明度
material.DOColor(Color.clear, "_Tint", 2);
material.DOFade(0, "_Tint", 2);
//渐变
material.DOGradientColor(gradient, "_Tint", 2f);
//万能 根据给的属性名进行操作
material.DOVector(Color.red, "_Tint", 2f);
//颜色混合
material.DOBlendableColor(Color.red, "_Tint", 2f);
material.DOBlendableColor(Color.green, "_Tint", 2f);
三、camera
//camera
Camera camera = GetComponent<Camera>();
//改变相机的宽高比 第一个参数
camera.DOAspect(0.5f, 2f);
//背景颜色
camera.DOColor(Color.yellow, 2f);
//横截面
camera.DONearClipPlane(26f, 2f);
//相机的两种模式 透视投影和正交投影
//透视投影下的FieldOfView属性(就是摄像机那个张开的角度) 放大缩小图像
camera.DOFieldOfView(50f, 2f);
//正交投影下的FieldOfView属性 放大缩小图像 size越小图像越大
camera.DOOrthoSize(2f, 2f);
//摄像机分屏效果实现
//像素实现 前面两个是坐标 后面是宽高
camera.DOPixelRect(new Rect(0, 0,360,540), 2f);
//百分比实现 前面两个是坐标 后面是宽高百分比
camera.DORect(new Rect(0,0,0.5f,0.5f), 2f);
//震动效果
camera.DOShakePosition(2, 20, 10);
四、Text
//Text
Text text=GetComponent<Text>();
//一个字一个字显示 默认先快后慢
text.DOText("刘子奇爱吃屎吃屎吃屎", 3f);
//平滑显示
text.DOText("刘子奇爱吃屎吃屎吃屎", 3f).SetEase(Ease.Linear);
五、Sequence
//Sequence 队列
//初始化
Sequence sequence = DOTween.Sequence();
//添加
sequence.Append(transform.DOMove(Vector3.one, 2));
sequence.AppendCallback(AppendCallback);
//停一秒后再移动
sequence.AppendInterval(1);
sequence.Append(transform.DOMove(new Vector3(1, 0, 0), 2));
//join 和上一条Append语句同时执行
sequence.Join(transform.DOScale(Vector3.one, 2));
//insert
//第一个参数是插入动画的时间 要从0.00...开始才能替代而不是0 !
//若和之前Append进来的动画时间重合 则会直接替代
sequence.Insert(0.00001f, transform.DOMove(-Vector3.one, 2));
sequence.Join(transform.DOScale(Vector3.one * 2, 2));
//也可以在动画时间线之外添加动画
sequence.Insert(6, transform.DOMove(-Vector3.one * 2, 2));
sequence.Insert(0, transform.DOScale(Vector3.one * 2, 2));
sequence.Insert(3, transform.DOScale(Vector3.one, 2));
//Prepend 在所有Append方法之前执行
sequence.PrependInterval(1);
sequence.Prepend(transform.DOMove(-Vector3.one, 2));
sequence.PrependCallback(PrependCallback);
//回调函数 三种 Sequence自带的回调 预回调 Append的回调
sequence.InsertCallback(8, insertCallback);
六、设置参数
//设置参数
transform.DOMove(Vector3.one, 2).SetLoops(-1, LoopType.Incremental);
//Form 从目标点移动到物体原本的位置
//bool参数代表是否表示相对位置
transform.DOMove(Vector3.one, 2).From(true);
//以速度为基准运动
transform.DOMove(Vector3.one, 2).SetSpeedBased();
//设置ID 回收 相对运动
transform.DOMove(Vector3.one, 2).SetId("ID");
DOTween.Play("ID");
//激活回收(SetRecyclable),DOTween会缓存你创建的对象,以便它能够得到重复利用而不需要重新创建。
transform.DOMove(Vector3.one, 2).SetRecyclable(true);
transform.DOMove(Vector3.one, 2).SetRelative();
七、运动曲线
public AnimationCurve _curve;
void Start()
{
transform.DOMove(Vector3.one, 3).SetEase(_curve);
}
1.5代表物体位置和目标位置距离 p 的倍数 即物体运动 p*1.5
八、回调方法
//restart remind doflip dobackwards 动画重新调用时调用
transform.DOMove(Vector3.one, 3).OnRewind();
//循环里面每执行一次 调用一次 区别与OnComplete
transform.DOMove(Vector3.one, 3).OnStepComplete();
九、获取动画
void Start () {
transform.DOMove(Vector3.one, 2);
var list = DOTween.TweensById("ID", true);
// 第一个参数是动画对象 bool值表示当前对象正在执行的动画
var list2 = DOTween.TweensByTarget(transform, true);
}
十、动画状态和属性
var tweener= transform.DOMove(Vector3.one, 2).SetLoops(3);
//返回动画的延后调用时间
tweener.Delay();
//返回动画的持续时间 bool值表示是否包含循环
tweener.Duration(true);
//动画目前经历的时间
print(tweener.Elapsed(true));
//针对单次循环 返回这段动画当前时间的所占时间的百分比
tweener.ElapsedDirectionalPercentage();
//带参数 对循环
tweener.ElapsedPercentage();
十一、路径动画 ....
//路径动画
transform.DOPath(listPosition, 5, PathType.Linear, PathMode.Full3D, 10, Color.red)
.SetOptions(true,AxisConstraint.None,AxisConstraint.Y)
.SetLookAt(new Vector3(0, 0, 0));