下载DoTween
在Asset Store直接下载,分为付费和免费版本
这里讲解是付费完整版
对变量进行动画(正则表达式)
public float myValue2 = 0;
// Use this for initialization
void Start () {
//对变量做一个动画 (通过插值的方式去修改一个值的变化)
DOTween.To(() => myValue2, x => myValue2 = x, 10, 2);
}
这个myValue2可以是任何类型的变量,10和后面的2分别是需要运动到的值和运动到这个值需要的时间
下面我们用一个按钮来控制面板的移动,实现点击一次从屏幕外面进来,再点击一次让他出去
public RectTransform panelTransform;
private bool isIn = false;
void Start() {
//panelTransform.DOMove(new Vector3(0, 0, 0), 1);//让paneltransfrom从当前位置 动画到 0,0,0的位置 时间为1s (修改的世界坐标)
Tweener tweener = panelTransform.DOLocalMove(new Vector3(0, 0, 0), 0.3f);//默认动画播放完成会被销毁
//Tweener对象保存这个动画的信息 每次调用do类型的方法都会创建一个tweener对象,这个对象是dotween来管理
tweener.SetAutoKill(false);// 把autokill 自动销毁设置为false
tweener.Pause();//暂停动画播放
}
public void OnClick() {
if (isIn == false) {
panelTransform.DOPlayForward();//前放
isIn = true;
}
else {
//让panel离开屏幕
panelTransform.DOPlayBackwards();//倒放
isIn = false;
}
}
这个需要注意,ui和3d物体不一样,他的移动是控制RectTransform,而且ui的坐标都是局部坐标,这里我们因为dotween每次都会自动销毁,对我们做返回不好,所以使用SetAutoKill(false)不时它销毁,但是如果放在update方法的话每次执行都会生成一个动画存放在tweener物体身上,因为不会自动销毁所以我们需要将它放在start里面生成,然后控制动画向前播放和向后播放就可以了。
改变物体大小
DOScale是设置大小的方法
transform.localScale = Vector3.zero;
transform.DOScale(1, 1f);
fromTween方法
void Start () {
transform.DOMoveX(5, 3).From();
//默认是从当前位置运行到目标位置 加上From()方法以后表示从目标位置移动到当前位置
transform.DOMoveX(5, 4).From(true);
}
from方式就是和直接使用是反方向的,比如第一句代码不加from方法是想从当前位置运动到5的位置,时间三秒,加上之后就是从5运动到当前位置时间3秒,from方法里面有一个参数,默认为false就是直接从目标位置运动到当前位置,如果改为ture就是相对坐标,也就是从距离5的位置运动到目标位置,假如当前位置是1,就是从1+5也就是6的位置运动到1的位置。
设置动画曲线,也就是动画运动的轨迹,以及动画事件
如图修改SetEase()这个方法里面的Ease即可
void Start () {
Tweener tweener = transform.DOLocalMoveX(0, 2);
tweener.SetEase(Ease.OutBounce);//动画曲线
tweener.OnComplete(OnTweenComplete);//动画结束事件
tweener.SetLoops(2);//动画循环次数
}
void OnTweenComplete() {
Debug.Log("动画播放完成了");
}
常用的DoTween的生命周期函数
OnComplete();//绑定事件的函数
Onkill();//动画被销毁的时候调用
OnPlay();//动画播放的时候调用
OnPause();//动画暂停的时候调用
OnRewind();//动画被重置的时候
OnStart();//动画被播放的时候(只会调用一次)
文字框Test文本的轮播动画
这个方法会一个字一个字显示文本内容,如果文本有内容就会一个字一个字的替换文本内容
private Text text;
// Use this for initialization
void Start () {
text = this.GetComponent<Text>();
text.DOText("接下来,我们进入第二篇章接下来,我们进入第二篇章", 4);
}
屏幕震动效果
对相机进行操作
void Start () {
//参数分别是震动幅度和相机位移的向量,比如我不想让前后动,就把z轴设置为0
transform.DOShakePosition(1,new Vector3(3,3,0));
}
颜色和透明的动画
private Text text;
// Use this for initialization
void Start () {
text = GetComponent<Text>();
//设置颜色
//text.DOColor(Color.red, 2);
//设置透明度
text.DOFade(1, 3);
}