public void PopPage() { //将最后的一个page删除 Scene cur = SceneManager.GetActiveScene(); Transform canvasTransform = null; GameObject[] goList = cur.GetRootGameObjects(); for (int i = 0; i < goList.Length; i++) { if (goList[i].name == "Canvas") { canvasTransform = goList[i].transform; break; } } if (canvasTransform == null) { UnityEngine.Debug.LogError("that scene don't have canvas"); return; } if (scenePageInfo.ContainsKey(cur.name)) { List <UIPage> list = scenePageInfo[cur.name]; if (list.Count > 0) { UIPage up = list[list.Count - 1]; string gameObjectName = up.GetPageName(); Transform childTransform = canvasTransform.Find(gameObjectName); if (childTransform != null) { GameObject.Destroy(childTransform.gameObject); list.Remove(up); //传递消息 if (popPageMessage.ContainsKey(gameObjectName)) { List <UIPage> listMsg = popPageMessage[gameObjectName]; for (int i = 0; i < listMsg.Count; i++) { listMsg[i].OnUIMessage(UIMEssageType.PopPage, gameObjectName); } } } else { return; } } else { return; } } else { UnityEngine.Debug.LogError("can't find scene page info poppage"); return; } }
public void PopPage(string pageName) { Scene cur = SceneManager.GetActiveScene(); Transform canvasTransform = null; GameObject[] goList = cur.GetRootGameObjects(); for (int i = 0; i < goList.Length; i++) { if (goList[i].name == "Canvas") { canvasTransform = goList[i].transform; break; } } if (canvasTransform == null) { UnityEngine.Debug.LogError("that scene don't have canvas"); return; } UIPage up = GetUIPageByName(cur.name, pageName); if (up == null) { UnityEngine.Debug.LogError("can't find the uipage by the name"); return; } string gameObjectName = up.GetPageName(); Transform childTransform = canvasTransform.Find(gameObjectName); if (childTransform != null) { GameObject.Destroy(childTransform.gameObject); if (scenePageInfo.ContainsKey(cur.name)) { List <UIPage> scenePage = scenePageInfo[cur.name]; scenePage.Remove(up); //传递消息 if (popPageMessage.ContainsKey(gameObjectName)) { List <UIPage> list = popPageMessage[gameObjectName]; for (int i = 0; i < list.Count; i++) { list[i].OnUIMessage(UIMEssageType.PopPage, gameObjectName); } } } else { UnityEngine.Debug.LogError("current scene do not contain the scene: " + cur.name); } } else { UnityEngine.Debug.LogError("poppage can't find " + gameObjectName); } }
public void UnRegisterUIMessage(string name, UIMEssageType type, UIPage page) { Dictionary <string, List <UIPage> > container = null; if (type == UIMEssageType.PushScene) { container = pushSceneMessage; } else if (type == UIMEssageType.PopScene) { container = popSceneMessage; } else if (type == UIMEssageType.PushPage) { container = pushPageMessage; } else if (type == UIMEssageType.PopPage) { container = popPageMessage; } if (container.ContainsKey(name) == false) { UnityEngine.Debug.LogError("the " + type.ToString() + " don;t have " + name + "registered"); return; } List <UIPage> list = container[name]; bool haveThePage = false; for (int i = 0; i < list.Count; i++) { if (list[i] == page) { list.RemoveAt(i); haveThePage = true; break; } } if (haveThePage == false) { UnityEngine.Debug.LogError(page.GetPageName() + " don't registered " + type.ToString() + " " + name); } }