您的位置:首页 > 移动开发 > Unity3D

Unity3D 学习日记(八) DoTween学习笔记之Tweener(二)

2016-04-25 18:22 531 查看
如果你使用了DoTween的时候会发现DoTween动画会默认播放状态,但是我们有很多UI动画并没有一开始就不断播放的功能因此我们需要修改动画播放的状态以及其他属性的时候该怎么办呢?

你可能注意到了DoTween所创建的动画都是默认Play状态以及播放完毕后会自动销毁动画,避免动画占用或者消耗内存。但是很多UI动画都是可以不断重复播放的,如果不断创建和销毁动画这样会消耗很多内存以及资源的,在游戏中这种情况一定要避免,为此DoTween提供了一个类方便我们进行动画状态以及属性等进行管理和修改等,DoTween的动画状态以及属性都可以通过Tweener类进行统一的管理和修改,所以Tweener也可以所示DoTween的核心功能之一,是值得我们去研究和学习的一个函数。

这里我简单的介绍一下Tweener类比较常用的一些函数,以及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("动画播放完毕!");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: