Unity DoTweening动态添加动画


1.简单记录一下,不喜勿喷

首先下载DoTween插件 

直接上代码,代码不多,好几个动画放一起,一起播放

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening;
using UnityEngine.UI;

public class Systean_BtnAni : MonoBehaviour
{

    public Transform[] tuian;
    private Vector3 H_2_pointx;
    public Button btn;
    public Sprite hig_sprite,nhig_sprite;
    public Sequence se;
    private Vector3 H_3_yidong;
    // Start is called before the first frame update
    void Start()
    {
        H_2_pointx = tuian[5].localPosition;
        H_3_yidong = new Vector3 (-878.2f,271.6f,0);
        btn.onClick.AddListener(delegate {
            TweenCallback completeCallBack = SanJiao_XiaoShi;
            TweenCallback completeCallBack1 = Xianchu;
            TweenCallback completeCallBack2 = Dianchu;
            //动画的队列 
            se = DOTween.Sequence();
            //创建的动画
            Tween tween = tuian[1].DOScale(0, 0.2f);
            Tween tween1 = tuian[5].GetComponent<RectTransform>().DOLocalMove(H_3_yidong, 1f);
            Tween tween2 = tuian[4].DOScale(0.6f, 0.3f).SetLoops(2, LoopType.Yoyo);
            Tween tween3 = tuian[6].GetComponent<Image>().DOFillAmount(1, 0.3f);
            Tween tween4 = tuian[7].DOScale(1.5f, 0.5f).SetLoops(2, LoopType.Yoyo);
            //把动画添加到队列里面
            se.Append(tween);
            //插入动画
            se.AppendCallback(completeCallBack);
            se.Append(tween1);
            se.Append(tween2);
            //插入动画
            se.AppendCallback(completeCallBack1);
            se.Append(tween3);
            //插入动画
            se.AppendCallback(completeCallBack2);
            se.Append(tween4);
            //播放队列里面的动画  按顺序播放
            se.Play();
            btn.GetComponent<Image>().sprite = hig_sprite;
        });
    }
    void SanJiao_XiaoShi()
    {
        tuian[5].gameObject.SetActive(true);
        tuian[4].gameObject.SetActive(true);
        tuian[0].gameObject.SetActive(false);
    }
    void Xianchu()
    {
        tuian[6].gameObject.SetActive(true);
    }
    void Dianchu()
    {
        tuian[7].gameObject.SetActive(true);
    }  
    public void NoDisAble_()
    {
        //动画停止
        se.Kill();
        btn.GetComponent<Image>().sprite = nhig_sprite;
        tuian[1].localScale = new Vector3(1, 1, 1);
        tuian[5].localPosition = H_2_pointx;
        for (int i = 0; i < tuian.Length ; i++)
        {
            if (i<=3)
            {
                tuian[i].gameObject.SetActive(true);
            }
            else
            {
                tuian[i].gameObject.SetActive(false);
            }
        }
    }
    
}

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM