Пример #1
0
    //界面出栈
    public void PopPanel()
    {
        if (panelStack == null)
        {
            panelStack = new Stack <BasePanle>();
        }

        if (panelStack.Count <= 0)
        {
            return;
        }

        BasePanle topPanel = panelStack.Pop();

        topPanel.OnExit();

        if (panelStack.Count <= 0)
        {
            return;
        }

        BasePanle topPanel2 = panelStack.Peek();

        topPanel2.OnResume();
    }
Пример #2
0
    //通过界面类型获取UI界面
    private BasePanle GetPanel(UIPanelType panelType)
    {
        if (panelDict == null)//界面字典判空,如果为空则实例化对象
        {
            panelDict = new Dictionary <UIPanelType, BasePanle>();
        }

        BasePanle panel = panelDict.TryGet(panelType);//获取panelType存放的键值相关联的对象

        //Debug.Log(panel);
        if (panel == null)                                                                     //将使用过的UI界面对象转存到Dictionary<UIPanelType, BasePanle>字典中,省去每次加载界面都通过path路径从UIPanelType.json里面读取
        {
            string     path      = panelPathDict.TryGet(panelType);                            //从Dictionary<UIPanelType, string>字典中加载panelType保存的键值相关联的路径
            GameObject instPanel = GameObject.Instantiate(Resources.Load(path)) as GameObject; //通过路径寻找到游戏物体
            instPanel.transform.SetParent(CanvasTransform, false);                             //将CanvasTransform游戏物体设置成instPanel所代表的游戏物体的父节点
            instPanel.GetComponent <BasePanle>().UIMng  = this;                                //使BasePanel持有本对象--UIManager对象的引用
            instPanel.GetComponent <BasePanle>().Focade = facade;
            panelDict.Add(panelType, instPanel.GetComponent <BasePanle>());                    //向Dictionary<UIPanelType, BasePanle>字典加入数据
            return(instPanel.GetComponent <BasePanle>());
        }
        else
        {
            return(panel);
        }
    }
Пример #3
0
    private void OnChangeMapClick()
    {
        PlayClickSound();
        BasePanle panel = uiMng.PushPanel(UIPanelType.Room);

        createRoomRequest.SetPanel(panel);
        createRoomRequest.SendRequest(currentMap.ToString());//发送地图索引给服务器
    }
    public void Update()
    {
        if (userDataList != null)
        {
            LoadRoomItem(userDataList);
            userDataList = null;
        }

        if (userData1 != null && userData2 != null)
        {
            BasePanle panel = uiMng.PushPanel(UIPanelType.Room);
            (panel as RoomPanel).SetAllPlayerResSync(userData1, userData2);
            userData1 = null;
            userData2 = null;
        }
    }
Пример #5
0
    //界面入栈
    public BasePanle PushPanel(UIPanelType panelType)
    {
        if (panelStack == null)//判断界面栈对象是否存在,如果不存在则实例化一个对象
        {
            panelStack = new Stack <BasePanle>();
        }
        if (panelStack.Count > 0)                   //界面栈判空
        {
            BasePanle topPanel = panelStack.Peek(); //获取栈顶的值
            topPanel.OnPause();
        }

        BasePanle panel = GetPanel(panelType);//获取panelType相关联的界面对象

        panel.OnEnter();
        panelStack.Push(panel);//将界面对象压入界面栈
        return(panel);
    }
 //获取当前入栈的UIPanel
 public void SetPanel(BasePanle panel)
 {
     roomPanel = panel as RoomPanel;
 }