Tweener
using UnityEngine;
using DG.Tweening;
public class MyButton : MonoBehaviour {
public RectTransform panelTranform;
private bool isIn = false;
public LoopType loopType; //循环的模式
void Start()
{
//panelTranform.DOMove(Vector3.zero, 1); //这个是修改UGUI的世界坐标
//创建一个简单位移动画,并将动画赋值给一个Tweener进行管理
Tweener paneltweener = panelTranform.DOLocalMove(Vector3.zero, 2f); //这个是修改UGUI的局部坐标,相对与父类的局部坐标
//多次调用DOTween动画会影响性能
//DOTween默认动画播放完毕时会自动销毁动画
//Tweener对象保存这个动画
paneltweener.SetAutoKill(false); //禁止销毁动画
paneltweener.Pause(); //停止播放动画
//paneltweener.SetDelay(0.5f); //设置动画延迟播放
//paneltweener.SetEase(Ease.INTERNAL_Zero); //设置动画运动的模式
//paneltweener.SetLoops(-1); //设置循环播放 (当参数为-1的时候循环播放;当参数>=0的时候则表示循环的次数;0的时候表示循环一次)
//paneltweener.SetLoops(-1,loopType) //设置循环播放并且设置动画循环的模式
//paneltweener.PlayForward(); //播放
//paneltweener.PlayBackwards(); //倒放
//paneltweener.OnComplete(OnComplete); //动画播放完毕后执行,动画倒放时候不执行
//paneltweener.OnStart(OnStart); //动画第一次播放时执行
//paneltweener.OnUpdate(OnUpdate); //动画播放时不断执行
//paneltweener.OnPlay(OnPlay); //动画开始播放时执行
//paneltweener.OnStepComplete(OnStepComplete);//动画播放且倒放都会执行一次,且执行顺序先于OnComplete
//paneltweener.OnKill(OnKill); //动画删除的时候执行事件
//paneltweener.Kill(true); //删除动画且组件会直接到达指定位置
}
private void OnKill()
{
Debug.Log("This is OnKill");
}
private void OnStepComplete()
{
Debug.Log("This is OnStepComplete");
}
private void OnPlay()
{
Debug.Log("This is OnPlay");
}
private void OnUpdate()
{
Debug.Log("This is OnUpdate");
}
private void OnStart()
{
Debug.Log("动画第一次播放");
}
public void OnClick()
{
if(!isIn)
{
//注释掉的方法是效果都是一样的
//panelTranform.DOPlay(); //动画只会播放一次
panelTranform.DOPlayForward(); //前进
//paneltweener.PlayForward(); //播放
isIn = true;
}
else
{
//paneltweener.PlayBackwards(); //倒放
panelTranform.DOPlayBackwards(); //倒放
isIn = false;
}
}
void OnComplete()
{
Debug.Log("动画播放完毕!");
}
}