//--------------------------------------------------------
|
// [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<int, List<Transform>> dic = new Dictionary<int, List<Transform>>();
|
List<int> KeySort = new List<int>();
|
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<Transform> tran = new List<Transform>();
|
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<Transform> list)
|
{
|
for (int i = 0; i < list.Count; i++)
|
{
|
list[i].GetComponent<CanvasGroup>().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<Transform> list)
|
{
|
for (int i = 0; i < list.Count; i++)
|
{
|
list[i].GetComponent<CanvasGroup>().DOFade(1, ShadeTime);
|
}
|
}
|
|
public void AllShow()
|
{
|
for (int i = 0; i < Group.childCount; i++)
|
{
|
if (Group.GetChild(i).gameObject.activeInHierarchy)
|
{
|
Group.GetChild(i).GetComponent<CanvasGroup>().DOFade(1,0);
|
}
|
}
|
}
|
}
|
|
}
|