public bool ActiveWindow(string name)
        {
            lastTryOpenWindow = name;
            Init();
#if UNITY_EDITOR
            if (!m_WinBases.ContainsKey(name))
            {
                Debug.LogErrorFormat("Window \"{0}\" not found in this Manager", name);
            }
#endif
            if (_Now != null)
            {
                if (_Now.name == name || !CloseWindow(_Now.gameObject.name))
                {
                    return(false);
                }
            }
            if (m_WinBases.ContainsKey(name))
            {
                WindowsBase w = m_WinBases[name];
                bool        b = w.Active();
                if (b)
                {
                    //if(parent != null)
                    //    parent.child = this;
                    _Now = w;
                }
                return(b);
            }
            return(false);
        }
 bool CloseWindowWithOutHistory(string name)
 {
     if (m_WinBases.ContainsKey(name))
     {
         WindowsBase w = m_WinBases[name];
         if (w.Deactive())
         {
             _Now = null;
             return(true);
         }
     }
     return(false);
 }
 public bool CloseWindow(string name)
 {
     if (m_WinBases.ContainsKey(name))
     {
         WindowsBase w = m_WinBases[name];
         if (w.closeState == WindowsBase.CloseState.Default)
         {
             m_QueueWindows.Push(w);
         }
         if (w.Deactive())
         {
             _Now = null;
             return(true);
         }
     }
     return(false);
 }
        public void LoadPrev()
        {
            WindowsManager wm = LayerPeek();

            if (wm != this && wm.PrevState()) // (child.m_QueueWindows.Count > 0 || child._Now != null)
            {
                wm.LoadPrev();
                return;
            }

            /*if (child != null && child.gameObject.activeInHierarchy)
             * {
             *  if (child.PrevState()) // (child.m_QueueWindows.Count > 0 || child._Now != null)
             *  {
             *      child.LoadPrev();
             *      return;
             *  }
             * }*/
            bool b = true;

            if (_Now != null)
            {
                switch (LastPrevAction)
                {
                case LastPrev.CloseLastWindowNotCallONMLP:
                case LastPrev.CloseLastWindowCallONMLP:
                    if (!(b = CloseWindowWithOutHistory(_Now.gameObject.name)))
                    {
                        return;
                    }
                    break;

                case LastPrev.NotCloseLastWindowNotCallONMLP:
                case LastPrev.NotCloseLastWindowCallONMLP:
                    if (m_QueueWindows.Count > 0)
                    {
                        if (!(b = CloseWindowWithOutHistory(_Now.gameObject.name)))
                        {
                            return;
                        }
                    }
                    break;
                }
            }
            if (m_QueueWindows.Count > 0)
            {
                if (b)
                {
                    WindowsBase w = m_QueueWindows.Pop();
                    b = w.Active();
                    if (b)
                    {
                        _Now = w;
                    }
                }
            }
            else
            {
                if (b)
                {
                    if (((LastPrevAction == LastPrev.CloseLastWindowCallONMLP && _Now == null) || (LastPrevAction == LastPrev.NotCloseLastWindowCallONMLP && _Now != null)))
                    {
                        OnNoMoreLoadPrev.Invoke();
                    }
                    //child = null;
                }
            }
        }