lvjincheng hace 3 años
padre
commit
e8da3bb307

+ 19 - 0
Assets/BowArrow/Scripts/Manager/HomeMgr.cs

@@ -19,6 +19,18 @@ public class HomeMgr : MonoBehaviour
         Instantiate(SceneResourceManager.Instance.GetPrefab("AuthLoginMask"));
         Instantiate(SceneResourceManager.Instance.GetPrefab("RenderBowCamera"));
         Instantiate(SceneResourceManager.Instance.GetPrefab("NewUserGuiderManager"));
+        //标记某些界面不需要销毁
+        ViewMgr.Instance.SetViewDontDestroy<GameStartView>();
+        ViewMgr.Instance.SetViewDontDestroy<ChallengeOptionView>();
+        ViewMgr.Instance.SetViewDontDestroy<RoleSelectView>();
+        ViewMgr.Instance.SetViewDontDestroy<PKGameOptionView>();
+        ViewMgr.Instance.SetViewDontDestroy<PKMatchView>();
+        //显示缓存的隐藏页面
+        ViewMgr.Instance.ResumeView<GameStartView>();
+        ViewMgr.Instance.ResumeView<ChallengeOptionView>();
+        ViewMgr.Instance.ResumeView<RoleSelectView>();
+        ViewMgr.Instance.ResumeView<PKGameOptionView>();
+        ViewMgr.Instance.ResumeView<PKMatchView>();
     }
 
     void Start()
@@ -29,5 +41,12 @@ public class HomeMgr : MonoBehaviour
     void OnDestroy()
     {
         if (ins == this) ins = null;
+        ViewMgr.Instance.DestroyAllViewsExcludeDontDestroy();
+        //隐藏可缓存的页面
+        ViewMgr.Instance.HideView<GameStartView>();
+        ViewMgr.Instance.HideView<ChallengeOptionView>();
+        ViewMgr.Instance.HideView<RoleSelectView>();
+        ViewMgr.Instance.HideView<PKGameOptionView>();
+        ViewMgr.Instance.HideView<PKMatchView>();
     }
 }

+ 0 - 59
Assets/BowArrow/Scripts/Manager/ViewMgr.cs

@@ -10,18 +10,6 @@ public class ViewMgr : ViewManager<ViewMgr>
     {
         //设置视图组
         SetViewGroup<HomeFrameView>(1);
-        //场景监听
-        SceneManager.sceneLoaded += (scene, mode) => {
-            if (scene.name == "Home") {
-                ResumeViews(dontDestroyViews);
-            }
-        };
-        SceneManager.sceneUnloaded += (scene) => {
-            if (scene.name == "Home") {
-                DestroyAllViewsExcludeDontDestroy();
-                HideViews(dontDestroyViews);
-            }
-        };
     }
 
     //以下名称的预制体通过SceneResourceManager获取
@@ -35,51 +23,4 @@ public class ViewMgr : ViewManager<ViewMgr>
         if (scenePrefabs.Contains(viewName)) return SceneResourceManager.Instance.GetPrefab(viewName);
         return base.LoadViewPrefab("Home/" + viewName);
     }
-
-    //以下名称的界面不会随场景销毁而销毁
-    HashSet<string> dontDestroyViews = new HashSet<string>(new string[] {
-        //Home
-        "GameStartView", "ChallengeOptionView", "RoleSelectView", "PKGameOptionView", "PKMatchView"
-    });
-    protected override void ShowView(ViewBase viewBase, object[] args)
-    {
-        base.ShowView(viewBase, args);
-        string viewName = viewBase.GetType().Name;
-        //主要是为了删除名称中的(Clone)
-        viewBase.gameObject.name = viewName;
-        //某些界面设置为不销毁
-        if (dontDestroyViews.Contains(viewName)) viewBase.dontDestroy = true;
-        //旧版ui适配新ui框架
-        RectTransform rectTransform = (RectTransform) viewBase.transform;
-        rectTransform.anchorMin = Vector2.zero;
-        rectTransform.anchorMax = Vector2.one;
-        rectTransform.pivot = Vector2.one / 2;
-        rectTransform.localScale = Vector3.one;
-        var canvasScaler = rectTransform.GetComponent<UnityEngine.UI.CanvasScaler>();
-        if (canvasScaler) Destroy(canvasScaler);
-        //特殊处理
-        if (viewName == "HomeView") rectTransform.SetSiblingIndex(0);
-    }
-
-    public void ResumeViews(IEnumerable<string> viewNames, params object[] args) 
-    {
-        foreach (var viewName in viewNames)
-        {
-            ViewBase viewBase;
-            if (viewDict.TryGetValue(viewName, out viewBase)) {
-                ShowView(viewBase, args);
-            }
-        }
-    }
-
-    public void HideViews(IEnumerable<string> viewNames, params object[] args) 
-    {
-        foreach (var viewName in viewNames)
-        {
-            ViewBase viewBase;
-            if (viewDict.TryGetValue(viewName, out viewBase)) {
-                HideView(viewBase, false, args);
-            }
-        }
-    }
 }

+ 1 - 0
Assets/BowArrow/Scripts/View/Home/HomeView.cs

@@ -30,6 +30,7 @@ public class HomeView : JCUnityLib.ViewBase
     {
         ins = this;
 
+        transform.SetSiblingIndex(0); //放在ui最底层
         BluetoothHolder.Init();
         AudioMgr.Init();
         TopBarView.NeedShowIt(this);

BIN
Assets/ThirdAssets/JCUnityLib/JCUnityLib.dll