/// <summary> /// 重排蒙板层次 /// </summary> /// <param name="bindUIId"></param> private void ResortMaskLayer(UIViewID bindUIId) { var uiView = GetUIView(bindUIId); var childArr = new List <Transform> (); var resultArr = new List <Transform> (); foreach (Transform transform in popUpUIRoot.transform) { if (transform.gameObject != mask) { childArr.Add(transform); } } foreach (Transform transform in childArr) { if (transform != uiView.viewRoot.transform) { resultArr.Add(transform); } else { resultArr.Add(mask.transform); resultArr.Add(uiView.viewRoot.transform); } } for (int i = 0; i < resultArr.Count; i++) { resultArr [i].SetSiblingIndex(i); } }
/// <summary> /// 显示UIView /// </summary> /// <param name="viewID">UIView的ID</param> public UIView ShowUI(UIViewID viewID) { if (viewDic.ContainsKey(viewID)) { var view = viewDic[viewID]; if (!view.IsInit) { view.OnInit(); view.IsInit = true; } else { Debug.Log("View已初始化:" + viewID); } if (!view.IsShow) { view.OnShow(); view.IsShow = true; } else { Debug.Log("View已打开:" + viewID); } BringToTop(viewID); return(view); } Debug.LogError("无效ViewID:" + viewID); return(null); }
/// <summary> /// 包含回调的隐藏 /// </summary> /// <param name="viewID"></param> /// <param name="action"></param> public void HideUI(UIViewID viewID, Action action) { if (viewDic.ContainsKey(viewID)) { var view = viewDic [viewID]; if (view.isShow) { view.OnHide(action); view.isShow = false; } else { Debug.Log("View已关闭:" + viewID); } } else { Debug.LogError("无效ViewID:" + viewID); } maskBindUIList.Remove(viewID); if (maskBindUIList.Count == 0) { HidenUIMask(); } else { ResortMaskLayer(maskBindUIList [maskBindUIList.Count - 1]); } }
/// <summary> /// 删除UIView /// </summary> /// <param name="viewID">UIView的ID</param> public void DestroyUI(UIViewID viewID) { if (viewDic.ContainsKey(viewID)) { var view = viewDic[viewID]; view.OnDestroy(); view.IsInit = false; view.IsShow = false; } else { Debug.LogError("无效ViewID:" + viewID); } maskBindUIList.Remove(viewID); if (maskBindUIList.Count == 0) { HidenUIMask(); } else { var nextUI = GetUIView(maskBindUIList[maskBindUIList.Count - 1]); var viewIndex = nextUI.ViewRoot.transform.GetSiblingIndex(); mask.transform.SetSiblingIndex(viewIndex - 1); } }
/// <summary> /// 显示UIView /// </summary> /// <param name="viewID">UIView的ID</param> public UIView ShowUI(UIViewID viewID) { if (viewDic.ContainsKey(viewID)) { var view = viewDic [viewID]; if (view.viewRootCache == null) { view.LoadUI(); } if (!view.isInit) { view.OnInit(); view.isInit = true; } if (!view.isShow) { view.OnShow(); view.isShow = true; } BringToTop(viewID); return(view); } Debug.LogError("无效ViewID:" + viewID); return(null); }
/// <summary> /// 获取UIView /// </summary> /// <param name="viewID">UIView的ID</param> /// <returns></returns> public UIView GetUIView(UIViewID viewID) { if (viewDic.ContainsKey(viewID)) { return(viewDic [viewID]); } Debug.LogError("无效ViewID:" + viewID); throw new NullReferenceException(); }
/// <summary> /// 显示界面蒙板 /// </summary> /// <param name="uiObj">蒙板关联的UIId</param> public void ShowUIMask(UIViewID uiid) { mask.SetActive(true); mask.GetComponent <Image> ().DOKill(); mask.GetComponent <Image> ().color = Color.clear; mask.GetComponent <Image> ().DOColor(new Color(0, 0, 0, 0.7f), 0.3f); ResortMaskLayer(uiid); if (!maskBindUIList.Contains(uiid)) { maskBindUIList.Add(uiid); } }
private void ShowView(UIViewID uiViewID) { for (int i = 0; i < uiViews.Length; i++) { UIView uiView = uiViews[i]; if (uiView.UIViewID == uiViewID) { uiView.Show(); } } }
/// <summary> /// 设置UI到顶层 /// </summary> public void BringToTop(UIViewID viewID, int i = 1) { if (viewDic.ContainsKey(viewID)) { var view = viewDic [viewID]; if (!view.isInit) { return; } var nextUI = GetUIView(viewID); nextUI.viewRoot.transform.SetSiblingIndex(nextUI.viewRoot.transform.parent.childCount - i); } }
/// <summary> /// 设置UI到底层 /// </summary> /// <param name="viewID"></param> public void BringToBottom(UIViewID viewID, int i = 0) { if (viewDic.ContainsKey(viewID)) { var view = viewDic [viewID]; if (!view.isInit) { return; } var nextUI = GetUIView(viewID); nextUI.viewRoot.transform.SetSiblingIndex(i); } }
private void OnHideComplete(UIView uIView) { if (isSwappingViews) { ShowView(nextViewID); nextViewID = UIViewID.None; isSwappingViews = false; } currentViewID = UIViewID.None; }
/// <summary> /// 移除UIView注册 /// </summary> /// <param name="viewID">UIView的ID</param> public void RemoveUI(UIViewID viewID) { if (viewDic.ContainsKey(viewID)) { var view = viewDic [viewID]; view.OnRemove(); viewDic.Remove(viewID); view = null; } else { Debug.LogError("无效ViewID:" + viewID); } }
private void HideView(UIViewID uiViewID) { for (int i = 0; i < uiViews.Length; i++) { UIView uiView = uiViews[i]; if (uiView.UIViewID == uiViewID) { uiView.Hide(); break; } } }
private void InitializeView(UIViewID uiViewID) { for (int i = 0; i < uiViews.Length; i++) { UIView uiView = uiViews[i]; uiView.ShowCompleteEvent += OnShowComplete; uiView.HideCompleteEvent += OnHideComplete; if (uiView.UIViewID == uiViewID) { uiView.Initialize(); } } }
private void SwitchView(UIViewID uiViewID) { if (currentViewID == UIViewID.None || currentViewID == uiViewID) { ShowView(uiViewID); return; } nextViewID = uiViewID; isSwappingViews = true; HideCurrentView(); }
/// <summary> /// 注册UIView /// </summary> /// <param name="viewID">UIView的ID</param> /// <param name="uiView">UIView对象</param> public void RegisterUI(UIViewID viewID, UIView uiView) { if (uiView != null) { if (!viewDic.ContainsKey(viewID)) { viewDic.Add(viewID, uiView); } else { Debug.LogError("该UI:" + viewID + "已存在,请勿重复注册"); } } else { Debug.LogError("注册失败,无效ViewID:" + viewID); } }
/// <summary> /// 删除UIView /// </summary> /// <param name="viewID">UIView的ID</param> public void DestroyUI(UIViewID viewID) { if (viewDic.ContainsKey(viewID)) { var view = viewDic [viewID]; view.OnDestroy(); view.isInit = false; view.isShow = false; } else { Debug.LogError("无效ViewID:" + viewID); } maskBindUIList.Remove(viewID); if (maskBindUIList.Count == 0) { HidenUIMask(); } else { ResortMaskLayer(maskBindUIList [maskBindUIList.Count - 1]); } }
private void OnShowComplete(UIView uIView) { currentViewID = uIView.UIViewID; }