//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Monday, April 09, 2018 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using LitJson; using System.Text.RegularExpressions; using System.Text; using vnxbqy.UI; using UnityEngine.UI; using DG.Tweening; namespace vnxbqy.UI { public class MainDofadeTween:MonoBehaviour { [SerializeField] Transform Group; [Header("每列个数")] public int LINE = 3; [Header("下一列移动等待速度")] public float LineNext = 0.2f; [Header("渐变时间")] public float ShadeTime = 1f; Dictionary> dic = new Dictionary>(); List KeySort = new List(); private void OnDisable() { StopAllCoroutines(); } public void BlendTrans( bool IsVanish) { dic.Clear(); for (int i = 0; i < Group.childCount; i++) { if (Group.GetChild(i).gameObject.activeInHierarchy) { int line = Mathf.CeilToInt((float)(i+1)/ LINE); if (!dic.ContainsKey(line)) { List tran = new List(); tran.Add(Group.GetChild(i).transform); dic.Add(line, tran); } else { dic[line].Add(Group.GetChild(i).transform); } } } if (IsVanish) { StopCoroutine("AppearIe"); StartCoroutine("Vanish"); } else { Appear(); } } IEnumerator Vanish()//消失 { foreach (var key in dic.Keys) { ListTran(dic[key]); yield return new WaitForSeconds(LineNext); } yield return null; } private void ListTran(List list) { for (int i = 0; i < list.Count; i++) { list[i].GetComponent().DOFade(0, ShadeTime); } } private void Appear()//出现 { KeySort.Clear(); foreach (var key in dic.Keys) { KeySort.Add(key); } KeySort.Reverse(); StopCoroutine("Vanish"); StartCoroutine("AppearIe"); } IEnumerator AppearIe()//出现 { for (int i = 0; i < KeySort.Count; i++) { ListTranA(dic[KeySort[i]]); yield return new WaitForSeconds(LineNext); } yield return null; } private void ListTranA(List list) { for (int i = 0; i < list.Count; i++) { list[i].GetComponent().DOFade(1, ShadeTime); } } public void AllShow() { for (int i = 0; i < Group.childCount; i++) { if (Group.GetChild(i).gameObject.activeInHierarchy) { Group.GetChild(i).GetComponent().DOFade(1,0); } } } } }