/// <summary> /// 退出指定UI并显示其他已隐藏UI /// </summary> /// <param name="uIName"></param> private void ExitUIFormsAndDisplayOther(string uIName) { BaseUI baseUI = null; if (string.IsNullOrEmpty(uIName)) { return; } dicCurrentShowUIForms.TryGetValue(uIName, out baseUI); if (baseUI == null) { return; } // 将当前UI状态设置为隐藏,并从显示集合中 移除当前窗体 baseUI.Hiding(); dicCurrentShowUIForms.Remove(uIName); // 将其他窗体重新显示出来 foreach (var item in dicCurrentShowUIForms.Values) { item.Redisplay(); } foreach (var item in stackCurrentUIForm) { item.Redisplay(); } }
/// <summary> /// 退出指定UI /// </summary> /// <param name="UIname"></param> private void ExitUIForm(string uIName) { BaseUI baseUI = null; // 如果"当前显示的UI"不包含这个UI ,就直接返回 dicCurrentShowUIForms.TryGetValue(uIName, out baseUI); if (baseUI == null) { return; } // 隐藏UI 并从"当前显示的UI"集合中移除UI baseUI.Hiding(); dicCurrentShowUIForms.Remove(uIName); }
/// <summary> /// (反向切换UI) 窗体出站逻辑 /// </summary> private void PopUIForm(string uIName) { if (stackCurrentUIForm.Count >= 2) { BaseUI topUIForm = stackCurrentUIForm.Pop(); topUIForm.Hiding(); BaseUI enxtUIform = stackCurrentUIForm.Peek(); enxtUIform.Redisplay(); } else if (stackCurrentUIForm.Count == 1) { BaseUI topUIForm = stackCurrentUIForm.Pop(); topUIForm.Hiding(); } }
/// <summary> /// 浮动窗口打开 /// </summary> /// <param name="UIname"></param> /// <param name="vector"></param> void FloatingUIFormsShow(string UIname) { BaseUI baseUIForm; GameObject parentObj = EventSystem.current.currentSelectedGameObject; RectTransform parentRectTransform = parentObj.gameObject.GetComponent <RectTransform>(); if (FloatingUIFormsObject != null) { FloatingUIFormsObject.Hiding(); FloatingUIFormsObject = null; } dicALLUIForm.TryGetValue(UIname, out baseUIForm); if (baseUIForm != null) { FloatingUIFormsObject = baseUIForm; RectTransform rectTran = FloatingUIFormsObject.gameObject.GetComponent <RectTransform>(); Vector2 scope = CreatePosition(rectTran, parentRectTransform, FloatingUIFormsObject); scope = new Vector2(Mathf.Abs(scope.x), Mathf.Abs(scope.y)); if (canvasScope.x < scope.x || canvasScope.y < scope.y) { switch (FloatingUIFormsObject.SetUIType._FloatingUIShowPosition) { case EnumFloatingUIShowPosition.Top: CreatePosition(rectTran, parentRectTransform, EnumFloatingUIShowPosition.Below); break; case EnumFloatingUIShowPosition.Below: CreatePosition(rectTran, parentRectTransform, EnumFloatingUIShowPosition.Top); break; case EnumFloatingUIShowPosition.Left: CreatePosition(rectTran, parentRectTransform, EnumFloatingUIShowPosition.Right); break; case EnumFloatingUIShowPosition.LeftTop: CreatePosition(rectTran, parentRectTransform, EnumFloatingUIShowPosition.RightBelow); break; case EnumFloatingUIShowPosition.LeftBelow: CreatePosition(rectTran, parentRectTransform, EnumFloatingUIShowPosition.RightTop); break; case EnumFloatingUIShowPosition.Right: CreatePosition(rectTran, parentRectTransform, EnumFloatingUIShowPosition.Left); break; case EnumFloatingUIShowPosition.RightTop: CreatePosition(rectTran, parentRectTransform, EnumFloatingUIShowPosition.LeftBelow); break; case EnumFloatingUIShowPosition.RightBelow: CreatePosition(rectTran, parentRectTransform, EnumFloatingUIShowPosition.LeftTop); break; default: break; } } FloatingUIFormsObject.Display(); } }