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);
        }
    }