Unity-Dotween(一)

补间动画:又叫做中间帧动画,渐变动画,只要建立起始和结束的画面,中间部分由软件自动生成,省去了中间动画制作的复杂过程,这正是Flash的迷人之处,补间动画是Flash中最常用的动画效果。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening;//使用命名空间

public class MainTweener : MonoBehaviour
{
    public Transform cubeA;
    public Transform cubeB;
    // Start is called before the first frame update
    void Start()
    {
        DOTween.Init(false, true, LogBehaviour.ErrorsOnly);//初始化
        //快捷方式创建Tween
        cubeA.DOMove(new Vector3(-2, 2, 0), 1).SetRelative().SetLoops(-1, LoopType.Yoyo);
        //通用方式创建Tween
        DOTween.To(() => cubeB.position, x => cubeB.position = x,new Vector3(-2,2,0),4).SetRelative().SetLoops(-1,LoopType.Yoyo);
        
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

前提说明:

Tweener:一个持有值得控制并使值起作用的tween
Sequence:一个特殊的Tween,与其控制一个值,Squence控制其他tweens和将他们当成一个组。
Tween:一个通用的词,表名包括Tweener和Sequence Nested
tween:一个包含在Squence内的tween

Dotween方法前缀

DO前缀:适用于所有补间快捷方式(可以直接从已知对象开始的操作,如变换或材质)。 也是主DOTween类的前缀。

transform.DOMoveX(100, 1);
transform.DORestart();
transform.DoScale();

Set前缀:适用于所有可链接到补间的设置(除From之外,因为它作为设置应用,但不是真正的设置)。

myTween.SetLoops(4, LoopType.Yoyo);
myTween.SetSpeedBased();

On前缀:对于可以链接到补间的所有回调。

myTween.OnStart(myStartFunction).
myTween.OnComplete(myCompleteFunction);

创建一个Tweener

1.通用方式
2.快捷方式
3.其他方式

1.通用。最灵活的,可以补间任何值(快捷世界上在后台使用通用方式)

static DOTween.To(getter, setter, to, float duration)
getter:lambda表达式  ()=> myValue 
setter:lambda表达式  (x)=> myValue = x 
to:最终值
duration:补间时长
例如:
DOTween.To(()=> myVector, x=> myVector = x, new Vector3(3,4,8), 1);
DOTween.To(()=> myFloat, x=> myFloat = x, 52, 1);

2.快捷方式:dotween扩展了unity的对象,像transform,rigidbody,material,可以直接使用
例如:

transform.DOMove(new Vector3(2,3,4), 1);
rigidbody.DOMove(new Vector3(2,3,4), 1);
material.DOColor(Color.green, 1);

或者[反向播放.From()]

transform.DOMove(new Vector3(2,3,4), 1).From(); rigidbody.DOMove(new Vector3(2,3,4), 1).From(); material.DOColor(Color.green, 1).From();

其他已实现扩展方法的类:
Unity5: AudioSource、Camera、Light、LineRenderer、Material、Rigidbody、Rigidbody2D、SpriteRenderer、TrailRenderer、Transform Unity UI 4.6: CanvasGroup、Image、LayoutElement 、Outline、RectTransform、ScrollRect、Slider 、Text Pro版本: doPath,tk2dBaseSprite、tk2dSlicedSprite、tk2dTextMesh、TextMeshPro 、TextMeshProUGUI、Spiral

3.其他方式:通用方式的其他特殊形式(不用掌握)
例如:

Tweener paneltweener = panelTranform.DOScale (new Vector3(2,2,1),1f);
        //多次调用DOTween动画会影响性能
        //DOTween默认动画播放完毕时会自动销毁动画
        //Tweener对象保存这个动画

        paneltweener.SetAutoKill(false);              //禁止销毁动画

        paneltweener.Pause();                         //停止播放动画
        //paneltweener.SetDelay(0.5f);                //设置动画延迟播放
        //paneltweener.SetEase(Ease.INTERNAL_Zero);   //设置动画运动的模式
        //paneltweener.SetLoops(-1);                  //设置循环播放 (-1为循环播放;>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);                    //删除动画且组件会直接到达指定位置

补间动画序列Sequence

1.从Sequence末尾追加

mySequence.Append(transform.DOMoveX(45, 1));
mySequence.AppendCallback(MyCallback);
mySequence.AppendInterval(interval);

2.在Sequence中间插入

mySequence.Insert(1, transform.DOMoveX(45, 1));
mySequence.InsertCallback(1, MyCallback);

3.在Sequence最后一个开始时间插入

mySequence.Append(transform.DOMoveX(45, 1));
mySequence.Join(transform.DORotate(new Vector3(0,180,0), 1));

4.从Sequence的开头追加

mySequence.Prepend(transform.DOMoveX(45, 1));
mySequence.PrependCallback(MyCallback);
mySequence.PrependInterval(interval);

例如:

Sequence mySequence = DOTween.Sequence();
mySequence.Append(transform.DOMoveX(45, 1));
mySequence.Append(transform.DORotate(new Vector3(0,180,0), 1));
mySequence.PrependInterval(1);
mySequence.Insert(0, transform.DOScale(new Vector3(3,3,3), mySequence.Duration()));

简洁形式

Sequence mySequence = DOTween.Sequence();
mySequence.Append(transform.DOMoveX(45, 1))
        .Append(transform.DORotate(new Vector3(0,180,0), 1))
        .PrependInterval(1)
        .Insert(0, transform.DOScale(new Vector3(3,3,3), mySequence.Duration()));`
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以回答你关于UnityDOTween插件的问题。 首先,DOTween插件是用于制作Tween动画的工具,可以轻松地创建动画效果。下面是回答你的问题: 1. 设置参数 在使用DOTween插件创建Tween动画时,可以设置很多不同的参数,如持续时间、延迟时间、循环次数等。这些参数可以通过Tween对象的方法进行设置,例如: ```csharp //创建一个Tween对象 var tween = transform.DOMove(Vector3.zero, 1f); //设置Tween对象的参数 tween.SetDelay(0.5f); //设置延迟时间为0.5秒 tween.SetLoops(-1, LoopType.Yoyo); //设置无限循环,并且在每次循环结束时反转Tween对象的运动方向 ``` 2. Ease曲线 Ease曲线是用于控制Tween动画的运动方式,可以使Tween对象的运动变得更加平滑或者更加突然。DOTween插件提供了很多内置的Ease曲线,也可以自定义Ease曲线。在创建Tween对象时,可以通过传递Ease曲线的枚举值或者自定义的Ease曲线函数来设置Tween对象的Ease曲线,例如: ```csharp //使用Ease枚举值设置Tween对象的Ease曲线 var tween = transform.DOMoveX(5f, 1f).SetEase(Ease.InOutQuad); //设置Tween对象的Ease曲线为InOutQuad //使用自定义Ease曲线函数设置Tween对象的Ease曲线 var tween = transform.DOMoveX(5f, 1f).SetEase((t) => Mathf.Lerp(0f, 1f, t)); //设置Tween对象的Ease曲线为自定义的线性插值函数 ``` 3. 回调函数 回调函数是在Tween动画运动到指定位置或者完成一次循环时调用的函数。可以通过Tween对象的OnComplete、OnStepComplete、OnKill等方法设置Tween对象完成时需要调用的回调函数,例如: ```csharp //设置Tween对象完成时需要调用的回调函数 var tween = transform.DOMoveX(5f, 1f).OnComplete(() => Debug.Log("Tween completed!")); //设置Tween对象完成时需要输出日志信息 //设置Tween对象每次循环完成时需要调用的回调函数 var tween = transform.DOMoveX(5f, 1f).SetLoops(2).OnStepComplete(() => Debug.Log("Tween loop completed!")); //设置Tween对象每次循环完成时需要输出日志信息 ``` 4. 动画控制函数 动画控制函数是用于控制Tween动画的播放、暂停、重置等操作的函数。可以通过Tween对象的Play、Pause、Rewind等方法进行动画控制,例如: ```csharp //播放Tween动画 var tween = transform.DOMoveX(5f, 1f); tween.Play(); //播放Tween动画 //暂停Tween动画 var tween = transform.DOMoveX(5f, 1f); tween.Pause(); //暂停Tween动画 //重置Tween动画 var tween = transform.DOMoveX(5f, 1f); tween.Rewind(); //重置Tween动画 ``` 以上就是关于DOTween插件设置参数、Ease曲线、回调函数、动画控制函数的介绍,希望能够对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值