ソースを参照

窗口管理,优化小弹窗跳转界面

huangxiaoyue 1 年間 前
コミット
3a79498ff1

+ 1 - 0
GameClient/Assets/Game/HotUpdate/Views/IUIView.cs

@@ -11,6 +11,7 @@ namespace GFGGame
         string viewName { get; set; }
         long closeTime { get; set; }
         bool isReturnView { get; set; }
+        bool isReturnWindow { get; set; }
         bool backRefresh { get; set; }
         void Refresh();
         void Show();

+ 1 - 0
GameClient/Assets/Game/HotUpdate/Views/League/LeagueCreatView.cs

@@ -30,6 +30,7 @@ namespace GFGGame
             this.viewCom = _ui.target;
             this.viewCom.Center();
             this.modal = true;
+            isReturnWindow = true;
             viewAnimationType = EnumViewAnimationType.ZOOM_CENTER;
 
             _ui.m_btnClose.onClick.Add(Hide);

+ 1 - 1
GameClient/Assets/Game/HotUpdate/Views/League/LeagueJoinView.cs

@@ -29,7 +29,7 @@ namespace GFGGame
             _ui = UI_LeagueJoinUI.Create();
             this.viewCom = _ui.target;
             isfullScreen = true;
-            //isReturnView = true;
+            isReturnView = true;
 
             _ui.m_loaBg.url = ResPathUtil.GetBgImgPath("lm_beijing");
 

+ 3 - 2
GameClient/Assets/Game/HotUpdate/Views/Notice/NoticeView.cs

@@ -36,6 +36,7 @@ namespace GFGGame
             _ui = UI_NoticeUI.Create();
             this.viewCom = _ui.target;
             this.viewCom.Center();
+            isReturnWindow = true;
             this.modal = true;
             viewAnimationType = EnumViewAnimationType.ZOOM_CENTER;
             //isReturnView = true;
@@ -164,13 +165,13 @@ namespace GFGGame
 
             if (jumpIndex != 0)
             {
-                Hide();
                 ViewManager.Show($"GFGGame.{adCfg.jumpId}", jumpIndex, false, false);
+                //Hide();
             }
             else
             {
-                Hide();
                 ViewManager.Show($"GFGGame.{adCfg.jumpId}", param, false, false);
+                //Hide();
             }
 
         }

+ 4 - 0
GameClient/Assets/Game/HotUpdate/Views/UIView.cs

@@ -34,6 +34,10 @@ namespace GFGGame
         /// </summary>
         public bool isReturnView { get; set; }
         /// <summary>
+        /// 设置是否可以返回窗口
+        /// </summary>
+        public bool isReturnWindow { get; set; }
+        /// <summary>
         /// 设置返回界面是否刷新
         /// </summary>
         public bool backRefresh { get; set; }

+ 31 - 7
GameClient/Assets/Game/HotUpdate/Views/ViewManager.cs

@@ -13,6 +13,7 @@ namespace GFGGame
         public object viewData;
         public IUIView iUIView;
         public bool backRefresh;
+        public List<String> smallWindow;
     }
     /// <summary>
     /// 视图管理类
@@ -199,6 +200,24 @@ namespace GFGGame
                 viewStructure.iUIView = obj;
                 _viewStack.Add(viewStructure);
                 if (_viewStack.Count > 1 && !hideOthers) {
+                    if (_viewStack[_viewStack.Count - 2].smallWindow == null)
+                        _viewStack[_viewStack.Count - 2].smallWindow = new List<string>();
+
+                    _viewStack[_viewStack.Count - 2].smallWindow.Clear();
+                    //把开着的小弹窗存起来
+                    foreach (var objName in _viewDic.Keys)
+                    {
+                        IUIView view = (IUIView)_viewDic[objName];
+                        if (view.isReturnWindow)
+                        {
+                            if (view.isShowing)
+                            {
+                                _viewStack[_viewStack.Count - 2].smallWindow.Add(objName);
+                                view.Hide();
+                            }
+                        }
+                    }
+
                     _viewStack[_viewStack.Count - 2].iUIView.Hide();
                 }
             }
@@ -301,15 +320,20 @@ namespace GFGGame
                     viewStructure = _viewStack[_viewStack.Count - 1];
                     ViewManager.Show($"GFGGame.{viewStructure.name}", viewStructure.viewData, false, backRefresh,  true);
                     //重新打开小弹窗
-                    foreach (var objName in _viewDic.Keys)
+                    foreach (var objName in viewStructure.smallWindow)
                     {
-                        if (objName != viewStructure.name)
-                        {
-                            IUIView view = (IUIView)_viewDic[objName];
-                            if (view.isShowing)
-                                view.Show();
-                        }
+                        ViewManager.Show($"GFGGame.{objName}");
                     }
+
+                    //foreach (var objName in _viewDic.Keys)
+                    //{
+                    //    if (objName != viewStructure.name)
+                    //    {
+                    //        IUIView view = (IUIView)_viewDic[objName];
+                    //        if (view.isShowing)
+                    //            view.Show();
+                    //    }
+                    //}
                 }
             }
         }