Exemplo n.º 1
0
        public void CloseWndByName(UIWndName wndName, params object[] data)
        {
            if (m_wndCtrls.ContainsKey(wndName))
            {
                m_waitForClose.Enqueue(m_wndCtrls[wndName]);
//                m_wndCtrls[wndName].OnClose(data);
                m_wndCtrls.Remove(wndName);
            }
        }
Exemplo n.º 2
0
 public WndDefine GetWndDefine(UIWndName wnd)
 {
     if (defineDic.ContainsKey(wnd))
     {
         return(defineDic[wnd]);
     }
     else
     {
         return(null);
     }
 }
Exemplo n.º 3
0
 public GameObject GetWndPrefab(UIWndName wnd)
 {
     if (defineDic.ContainsKey(wnd))
     {
         return(defineDic[wnd].prefab);
     }
     else
     {
         return(null);
     }
 }
Exemplo n.º 4
0
//        public void UIBinder(UIWndName name, UIWnd ctrl)
//        {
//            if (!m_bindDic.ContainsKey(name))
//                m_bindDic.Add(name, ctrl);
//            else
//                m_bindDic[name] = ctrl;
//        }

        public void OpenWnd(UIWndName wnd, params object[] data)
        {
            if (UIDefine.Instance.GetWndDefine(wnd) == null)
            {
                return;
            }
            CreateProcess(wnd);
//            m_waitForOpen.Enqueue(UIDefine.Instance.GetWndPrefab(wnd).GetComponent<UIWnd>());
            m_wndPassData.Enqueue(data);
//            if (m_wndCtrls.ContainsKey(wnd))
//            {
//                m_wndCtrls[wnd] = m_waitForOpen.Peek();
//                return;
//            }
//            m_wndCtrls.Add(wnd,m_waitForOpen.Peek());
        }
Exemplo n.º 5
0
        private void CreateProcess(UIWndName wnd)
        {
            if (UIDefine.Instance.GetWndDefine(wnd) == null)
            {
                return;
            }
            if (m_wndCtrls.ContainsKey(wnd))//不允许重复打开界面
            {
                return;
            }
            WndDefine opening = UIDefine.Instance.GetWndDefine(wnd);//从配置内取出其对应配置

            if (m_wndCtrls.Count <= 0)
            {
                if (opening.prefab != null)
                {
                    GameObject go = Instantiate(opening.prefab);
//                    go.SetActive(false); //初始化为不可见,这一步是为了给新界面OnBeforeOpen函数预留加载时间
                    if (m_layersDic.ContainsKey(opening.layer.ToString()))
                    {
                        //将新UI界面设置给对应的层级
                        go.transform.SetParent(m_layersDic[opening.layer.ToString()].transform);
                        go.transform.localScale = Vector3.one;
                        go.transform.position   = Vector3.zero;
                        var recT = go.GetComponent <RectTransform>();
                        recT.anchorMax = Vector3.one;
                        recT.anchorMin = Vector3.zero;
                        recT.offsetMin = new Vector2(0, 0);
                        recT.offsetMax = new Vector2(0, 0);

                        m_waitForOpen.Enqueue(go.GetComponent <UIWnd>());
//                        m_wndPassData.Enqueue(data);
                        if (m_wndCtrls.ContainsKey(wnd))
                        {
                            m_wndCtrls[wnd] = go.GetComponent <UIWnd>();
                            return;
                        }
                        m_wndCtrls.Add(wnd, go.GetComponent <UIWnd>());
                    }
                    else
                    {
                        Debug.LogError(string.Format("Can Not Found This UI's Layer  [UI][{0}]", opening.wnd.ToString()));
                    }
                }
                return;
            }

            for (int i = 0; i < m_wndCtrls.Count; i++)
            {
                UIWndName name   = m_wndCtrls.Keys.ToList()[i];
                WndDefine opened = UIDefine.Instance.GetWndDefine(name);
                if (opened != null)
                {
                    //如果冲突则将当前打开的窗口推入待关闭列表
                    if (opening.exclusion == opened.exclusion)
                    {
                        m_waitForClose.Enqueue(m_wndCtrls[opened.wnd]);
                        m_wndCtrls.Remove(name);
                    }

                    if (opening.prefab != null)
                    {
                        GameObject go = Instantiate(opening.prefab);
//                        go.SetActive(false); //初始化为不可见,这一步是为了给新界面OnBeforeOpen函数预留加载时间
                        if (m_layersDic.ContainsKey(opening.layer.ToString()))
                        {
                            //将新UI界面设置给对应的层级
                            go.transform.SetParent(m_layersDic[opening.layer.ToString()].transform);
                            go.transform.localScale = Vector3.one;
                            go.transform.position   = Vector3.zero;
                            var recT = go.GetComponent <RectTransform>();
                            recT.anchorMax = Vector3.one;
                            recT.anchorMin = Vector3.zero;
                            recT.offsetMin = new Vector2(0, 0);
                            recT.offsetMax = new Vector2(0, 0);

                            m_waitForOpen.Enqueue(go.GetComponent <UIWnd>());
//                        m_wndPassData.Enqueue(data);
                            if (m_wndCtrls.ContainsKey(wnd))
                            {
                                m_wndCtrls[wnd] = go.GetComponent <UIWnd>();
                                return;
                            }
                            m_wndCtrls.Add(wnd, go.GetComponent <UIWnd>());
                        }
                        else
                        {
                            Debug.LogError(string.Format("Can Not Found This UI's Layer  [UI][{0}]", opening.wnd.ToString()));
                        }
                    }
                }

//            foreach (UIWndName name in m_wndCtrls.Keys)
//            {
//                WndDefine opened = UIDefine.Instance.GetWndDefine(name);
//                if (opened != null)
//                {
//                    //如果冲突则将当前打开的窗口推入待关闭列表
//                    if (opening.exclusion == opened.exclusion)
//                    {
//                        m_waitForClose.Enqueue(m_wndCtrls[opened.wnd]);
//                    }
//
//                    if (opening.prefab != null)
//                    {
//                        GameObject go = Instantiate(opening.prefab);
////                        go.SetActive(false); //初始化为不可见,这一步是为了给新界面OnBeforeOpen函数预留加载时间
//                        if (m_layersDic.ContainsKey(opening.layer.ToString()))
//                        {
//                            //将新UI界面设置给对应的层级
//                            go.transform.SetParent(m_layersDic[opening.layer.ToString()].transform);
//                            go.transform.localScale = Vector3.one;
//                            go.transform.position = Vector3.zero;
//                            var recT = go.GetComponent<RectTransform>();
//                            recT.anchorMax = Vector3.one;
//                            recT.anchorMin = Vector3.zero;
//                            recT.offsetMin = new Vector2(0,0);
//                            recT.offsetMax = new Vector2(0,0);
//
//                            m_waitForOpen.Enqueue(go.GetComponent<UIWnd>());
////                        m_wndPassData.Enqueue(data);
//                            if (m_wndCtrls.ContainsKey(wnd))
//                            {
//                                m_wndCtrls[wnd] = go.GetComponent<UIWnd>();
//                                return;
//                            }
//                            m_wndCtrls.Add(wnd,go.GetComponent<UIWnd>());
//                        }
//                        else
//                        {
//                            Debug.LogError(string.Format("Can Not Found This UI's Layer  [UI][{0}]",opening.wnd.ToString()));
//                        }
//                    }
//                }

//                foreach (UIWnd uiWnd in m_waitForClose)
//                {
//                    m_wndCtrls.Remove(uiWnd.WndName());
//                }
            }
        }