using UnityEngine; using System.Collections; using DG.Tweening; using System.Collections.Generic; /// /// UI的doTween插件,搞一个UI的弹出或者效果 /// public class UIDoTweenAnimation : MonoBehaviour { /// /// /// private RectTransform panelTransform; /// /// 动画 /// private Tweener tweener = null; /// /// 特效种类,0就是从下往上,1是从左往右,2是从右往左. /// private int KindOfEffect; /// /// /// public void OnEnable() { ////开始播放动画 ////启动动画播放 } private void Awake() { children = new Dictionary(); for (int i = 0; i < this.transform.childCount; i++) { GameObject go = this.transform.GetChild(i).gameObject; children.Add(go, go.transform.localPosition); } } /// /// /// private Dictionary children = new Dictionary(); /// /// /// private void StartPlayDoTween() { if (tweener != null && tweener.IsPlaying()) { tweener.Kill(); ResetToDefaultPos(); } for (int i = 0; i < this.transform.childCount; i++) { GameObject g = this.transform.GetChild(i).gameObject; RectTransform panelTransform = g.GetComponent(); Vector3 destPos = children[g]; if (KindOfEffect == 0) { transform.localPosition = new Vector3(destPos.x, -1920, destPos.z); tweener = panelTransform.DOLocalMove(destPos, 0.3f); tweener.SetEase(Ease.Linear);//动画曲线 tweener.SetDelay(i * 0.01f); } else if (KindOfEffect == 1) { transform.localPosition = new Vector3((destPos.x - 1080), destPos.y, destPos.z); tweener = panelTransform.DOLocalMove(destPos, 0.2f); tweener.SetEase(Ease.InOutQuad);//动画曲线 tweener.SetDelay(i * 0.02f); } else if (KindOfEffect == 2) { transform.localPosition = new Vector3((destPos.x + 1080), destPos.y, destPos.z); tweener = panelTransform.DOLocalMove(destPos, 0.2f); tweener.SetEase(Ease.InOutQuad);//动画曲线 tweener.SetDelay(i * 0.1f); } } } /// /// /// public void OnDisable() { if (tweener != null && tweener.IsPlaying()) { tweener.Kill(); } ResetToDefaultPos(); } /// /// /// public void OnDestory() { panelTransform.DOKill(); } /// /// 设置UI到默认位置 /// private void ResetToDefaultPos() { foreach (GameObject g in children.Keys) { RectTransform tc = g.GetComponent(); if (tc != null) { tc.anchoredPosition3D = children[g]; } } } }