少年修仙传客户端代码仓库
client_Wu Xijin
2018-08-13 eda22bcd9683f3a94e0744da60d23808272c627f
System/MainInterfacePanel/AnimationFadeOut.cs
@@ -1,228 +1,228 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Tuesday, April 10, 2018
//--------------------------------------------------------
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Text.RegularExpressions;
using System.Text;
using Snxxz.UI;
using UnityEngine.UI;
namespace Snxxz.UI
{
    public class AnimationFadeOut : MonoBehaviour
    {
        [Header("每列个数")]
        public int LINE = 4;
        [SerializeField] Transform m_OblNull;
        [SerializeField] LineFadeOut m_LineFadeOut1;
        [SerializeField] LineFadeOut m_LineFadeOut2;
        [SerializeField] LineFadeOut m_LineFadeOut3;
        [SerializeField] Animator m_Animator;
        [SerializeField] CanvasGroup m_CanvasGroup;
        [SerializeField] GameObject m_ShadeObj;
        Dictionary<int, List<Transform>> AnimationFadeOutDic = new Dictionary<int, List<Transform>>();
        Dictionary<int, Transform> tranDic = new Dictionary<int, Transform>();
        public void Init()
        {
            PositionReduction();
            Classify();
            FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChange;
        }
        public void Unit()
        {
            FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChange;
        }
        public void FadeOut()//淡出
        {
            m_Animator.Play("MainFadeIn");
            m_ShadeObj.SetActive(false);
        }
        public void FadeIn()//淡入
        {
            m_Animator.Play("MainFadeOut");
            m_ShadeObj.SetActive(true);
        }
        public void ImmediatelyAppear()//立刻出现
        {
            m_Animator.Play("ImmediatelyAppear", 0, 1);
            m_ShadeObj.SetActive(true);
        }
        public void FadeAtOnce()//立刻消失
        {
            m_Animator.Play("FadeAtOnce", 0, 1);
            m_ShadeObj.SetActive(false);
        }
        public bool GetIsFadeIn()//是否淡入
        {
            if (m_CanvasGroup.alpha < 0.5)
            {
                return false;
            }
            else
            {
                return true;
            }
        }
        private void OnFuncStateChange(int obj)
        {
            PositionReduction();
            Classify();
        }
        private void Classify()
        {
            SetGroup();
            SetfatherNode();
        }
        private void SetGroup()//进行分组
        {
            AnimationFadeOutDic.Clear();
            tranDic.Clear();
            int Index = 0;
            for (int i = 0; i < m_OblNull.childCount; i++)
            {
                if (m_OblNull.GetChild(i).GetComponent<UIFuncOpen>() != null && !FuncOpen.Instance.IsFuncOpen(m_OblNull.GetChild(i).GetComponent<UIFuncOpen>().id))
                {
                }
                else
                {
                    if (m_OblNull.GetChild(i).GetComponent<PositionIndex>() != null)
                    {
                        if (!tranDic.ContainsKey(m_OblNull.GetChild(i).GetComponent<PositionIndex>().Index))
                        {
                            int index = m_OblNull.GetChild(i).GetComponent<PositionIndex>().Index;
                            tranDic.Add(index, m_OblNull.GetChild(i));
                        }
                    }
                    Index += 1;
                    int line = Mathf.CeilToInt((float)Index / LINE);
                    if (!AnimationFadeOutDic.ContainsKey(line))
                    {
                        List<Transform> tran = new List<Transform>();
                        tran.Add(m_OblNull.GetChild(i).transform);
                        AnimationFadeOutDic.Add(line, tran);
                    }
                    else
                    {
                        AnimationFadeOutDic[line].Add(m_OblNull.GetChild(i).transform);
                    }
                }
            }
        }
        private void SetfatherNode()//设置父节点
        {
            if (AnimationFadeOutDic.Count != 0)
            {
                foreach (var key in AnimationFadeOutDic.Keys)
                {
                    SwithSome(key, AnimationFadeOutDic[key]);
                }
            }
            else
            {
                m_LineFadeOut1.gameObject.SetActive(false);
                m_LineFadeOut2.gameObject.SetActive(false);
                m_LineFadeOut3.gameObject.SetActive(false);
            }
        }
        private void SwithSome(int key, List<Transform> list)
        {
            switch (key)
            {
                case 1:
                    m_LineFadeOut1.gameObject.SetActive(true);
                    for (int i = 0; i < list.Count; i++)
                    {
                        int index = i;
                        Node(m_LineFadeOut1, index, list[index]);
                    }
                    break;
                case 2:
                    m_LineFadeOut2.gameObject.SetActive(true);
                    for (int i = 0; i < list.Count; i++)
                    {
                        int index = i;
                        Node(m_LineFadeOut2, index, list[index]);
                    }
                    break;
                case 3:
                    m_LineFadeOut3.gameObject.SetActive(true);
                    for (int i = 0; i < list.Count; i++)
                    {
                        int index = i;
                        Node(m_LineFadeOut3, index, list[index]);
                    }
                    break;
            }
        }//进行分列
        private void Node(LineFadeOut lineFadeOut, int index, Transform tran)//设置进空盒子中
        {
            switch (index)
            {
                case 0:
                    tran.SetParent(lineFadeOut.OneParent);
                    tran.localPosition = Vector3.zero;
                    break;
                case 1:
                    tran.SetParent(lineFadeOut.TwoParent);
                    tran.localPosition = Vector3.zero;
                    break;
                case 2:
                    tran.SetParent(lineFadeOut.ThreeParent);
                    tran.localPosition = Vector3.zero;
                    break;
                case 3:
                    tran.SetParent(lineFadeOut.FourParent);
                    tran.localPosition = Vector3.zero;
                    break;
                default:
                    break;
            }
        }
        private void PositionReduction()//还原位置(把盒子中的位置全部重新拉出来)
        {
            if (tranDic.Count <= 0)
            {
                return;
            }
            foreach (var key in tranDic.Keys)
            {
                tranDic[key].SetParent(m_OblNull);
                tranDic[key].SetSiblingIndex(key);
            }
        }
    }
}
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Tuesday, April 10, 2018
//--------------------------------------------------------
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Text.RegularExpressions;
using System.Text;
using Snxxz.UI;
using UnityEngine.UI;
namespace Snxxz.UI
{
    public class AnimationFadeOut : MonoBehaviour
    {
        [Header("每列个数")]
        public int LINE = 4;
        [SerializeField] Transform m_OblNull;
        [SerializeField] LineFadeOut m_LineFadeOut1;
        [SerializeField] LineFadeOut m_LineFadeOut2;
        [SerializeField] LineFadeOut m_LineFadeOut3;
        [SerializeField] Animator m_Animator;
        [SerializeField] CanvasGroup m_CanvasGroup;
        [SerializeField] GameObject m_ShadeObj;
        Dictionary<int, List<Transform>> AnimationFadeOutDic = new Dictionary<int, List<Transform>>();
        Dictionary<int, Transform> tranDic = new Dictionary<int, Transform>();
        public void Init()
        {
            PositionReduction();
            Classify();
            FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChange;
        }
        public void Unit()
        {
            FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChange;
        }
        public void FadeOut()//淡出
        {
            m_Animator.Play("MainFadeIn");
            m_ShadeObj.SetActive(false);
        }
        public void FadeIn()//淡入
        {
            m_Animator.Play("MainFadeOut");
            m_ShadeObj.SetActive(true);
        }
        public void ImmediatelyAppear()//立刻出现
        {
            m_Animator.Play("ImmediatelyAppear", 0, 1);
            m_ShadeObj.SetActive(true);
        }
        public void FadeAtOnce()//立刻消失
        {
            m_Animator.Play("FadeAtOnce", 0, 1);
            m_ShadeObj.SetActive(false);
        }
        public bool GetIsFadeIn()//是否淡入
        {
            if (m_CanvasGroup.alpha < 0.5)
            {
                return false;
            }
            else
            {
                return true;
            }
        }
        private void OnFuncStateChange(int obj)
        {
            PositionReduction();
            Classify();
        }
        private void Classify()
        {
            SetGroup();
            SetfatherNode();
        }
        private void SetGroup()//进行分组
        {
            AnimationFadeOutDic.Clear();
            tranDic.Clear();
            int Index = 0;
            for (int i = 0; i < m_OblNull.childCount; i++)
            {
                if (m_OblNull.GetChild(i).GetComponent<UIFuncOpen>() != null && !FuncOpen.Instance.IsFuncOpen(m_OblNull.GetChild(i).GetComponent<UIFuncOpen>().id))
                {
                }
                else
                {
                    if (m_OblNull.GetChild(i).GetComponent<PositionIndex>() != null)
                    {
                        if (!tranDic.ContainsKey(m_OblNull.GetChild(i).GetComponent<PositionIndex>().Index))
                        {
                            int index = m_OblNull.GetChild(i).GetComponent<PositionIndex>().Index;
                            tranDic.Add(index, m_OblNull.GetChild(i));
                        }
                    }
                    Index += 1;
                    int line = Mathf.CeilToInt((float)Index / LINE);
                    if (!AnimationFadeOutDic.ContainsKey(line))
                    {
                        List<Transform> tran = new List<Transform>();
                        tran.Add(m_OblNull.GetChild(i).transform);
                        AnimationFadeOutDic.Add(line, tran);
                    }
                    else
                    {
                        AnimationFadeOutDic[line].Add(m_OblNull.GetChild(i).transform);
                    }
                }
            }
        }
        private void SetfatherNode()//设置父节点
        {
            if (AnimationFadeOutDic.Count != 0)
            {
                foreach (var key in AnimationFadeOutDic.Keys)
                {
                    SwithSome(key, AnimationFadeOutDic[key]);
                }
            }
            else
            {
                m_LineFadeOut1.gameObject.SetActive(false);
                m_LineFadeOut2.gameObject.SetActive(false);
                m_LineFadeOut3.gameObject.SetActive(false);
            }
        }
        private void SwithSome(int key, List<Transform> list)
        {
            switch (key)
            {
                case 1:
                    m_LineFadeOut1.gameObject.SetActive(true);
                    for (int i = 0; i < list.Count; i++)
                    {
                        int index = i;
                        Node(m_LineFadeOut1, index, list[index]);
                    }
                    break;
                case 2:
                    m_LineFadeOut2.gameObject.SetActive(true);
                    for (int i = 0; i < list.Count; i++)
                    {
                        int index = i;
                        Node(m_LineFadeOut2, index, list[index]);
                    }
                    break;
                case 3:
                    m_LineFadeOut3.gameObject.SetActive(true);
                    for (int i = 0; i < list.Count; i++)
                    {
                        int index = i;
                        Node(m_LineFadeOut3, index, list[index]);
                    }
                    break;
            }
        }//进行分列
        private void Node(LineFadeOut lineFadeOut, int index, Transform tran)//设置进空盒子中
        {
            switch (index)
            {
                case 0:
                    tran.SetParent(lineFadeOut.OneParent);
                    tran.localPosition = Vector3.zero;
                    break;
                case 1:
                    tran.SetParent(lineFadeOut.TwoParent);
                    tran.localPosition = Vector3.zero;
                    break;
                case 2:
                    tran.SetParent(lineFadeOut.ThreeParent);
                    tran.localPosition = Vector3.zero;
                    break;
                case 3:
                    tran.SetParent(lineFadeOut.FourParent);
                    tran.localPosition = Vector3.zero;
                    break;
                default:
                    break;
            }
        }
        private void PositionReduction()//还原位置(把盒子中的位置全部重新拉出来)
        {
            if (tranDic.Count <= 0)
            {
                return;
            }
            foreach (var key in tranDic.Keys)
            {
                tranDic[key].SetParent(m_OblNull);
                tranDic[key].SetSiblingIndex(key);
            }
        }
    }
}