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); } }
public WndDefine GetWndDefine(UIWndName wnd) { if (defineDic.ContainsKey(wnd)) { return(defineDic[wnd]); } else { return(null); } }
public GameObject GetWndPrefab(UIWndName wnd) { if (defineDic.ContainsKey(wnd)) { return(defineDic[wnd].prefab); } else { return(null); } }
// 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()); }
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()); // } } }