看下DOTween和iTween的简单对比
eg:
在iTween中,设置物体移动到位置
iTween.MoveTo(gameObject, iTween.Hash(
“position”, valueTo,
)
);
在DOTween中,设置物体移动到位置
gameObject.transform.DOMove(position,duration )
SO,DOTween是更简单的链式结构
在插件中
On**表示事件
Do**表示你要执行的操作
Set**是对操作属性的额外设置
介绍下常用的设置
1、动画正反播放【PlayForward、PlayBackwards】
Tweener tweener ;
tweener =***叽里呱啦的(链式结构,想了解可以去看设计模式”责任链模式”)*
tweener.SetAutoKill(false);//务必设置别宰了他,不然我们的动画就没啦
tweener.Pause();//暂停它
tweener.PlayForward();//正播
2、实现回调【OnComplete】
.OnComplete(()=> { Debug.Log(“回调”); })
3、设置动画方式,正弦啊、余弦啊。。【SetEase】枚举F12自己看
SetEase(Ease.Linear)//线性的
4、循环【SetLoops】
SetLoops(-1)//(-1)无限循环
下面简单的介绍下常用的DoMove、DoRotate、DoFade
万般滋味自己体会,可以试试,有很多东西动手才可以
这里写代码片
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening;
using UnityEngine.UI;
public class DoTest : MonoBehaviour {
[SerializeField]
Transform target0;
[SerializeField]
Transform target1;
[SerializeField]
Transform target2;
Tweener tweener;
void Start () {
DoMove_();
DoFade_();
DoRotate_();
}
void DoMove_()
{
Vector3 endPosition=new Vector3 (10,0,0);
float duration=3;
tweener = target0.DOMove(endPosition,duration).SetEase(Ease.Linear).OnComplete(()=> { Debug.Log("事件触发"); });
tweener.SetAutoKill(false);
tweener.Pause();
}
void DoRotate_()
{
Vector3 endValue = new Vector3(0, 0, 360);
float duration = 1;
//实现无限循环
tweener = target1.DORotate(endValue, duration, RotateMode.WorldAxisAdd).SetLoops(-1).SetEase(Ease.Linear);
//tweener = target1.DORotate(endValue, duration, RotateMode.WorldAxisAdd).OnComplete(DoRotate_).SetEase(Ease.Linear);
tweener.SetAutoKill(false);
tweener.Pause();
}
void DoFade_()
{
tweener = target2.GetComponent<Image>().DOFade(0, 1).SetAutoKill(false).OnPause(() => { Debug.Log("暂停执行"); });
tweener.Pause();
tweener.OnPlay(() => { Debug.Log("重新开始执行"); });
}
void Update()
{
//实现正、反播放
//默认播放可用 tweener.Play();
if (Input.GetMouseButton(0))
{
tweener.PlayBackwards();
}
else
{
tweener.PlayForward();
}
}
}