Пример #1
0
 /// <summary>
 /// 退回到上一个堆栈里面
 /// </summary>
 /// <param name="type"></param>
 public void DoReturn(GlobalDefine.PanelType type)
 {
     if (m_nodeInfoDic.ContainsKey(type))
     {
         NodeInfo nodeInfo = m_nodeInfoDic[type];
         if (nodeInfo.uiControllerBase != null)
         {
             nodeInfo.uiControllerBase.Return();
         }
         //Atheos 此处后面决定是用contians 还是用Peek检测当前堆栈的数据
         //堆栈处理
         if (m_nodeStack.Contains(type))
         {
             m_nodeStack.Pop();
         }
         if (m_nodeStack.Count > 0)
         {
             DoOpen(m_nodeStack.Peek());
         }
         //if (nodeInfo.mediator != null) {
         //    AppFacade.Instance.RemoveMediator(nodeInfo.mediatorName);
         //}
     }
     else
     {
         Debug.Log("节点<color=red>" + type + "</color>尚未被包含在树结构中");
     }
 }
Пример #2
0
 /// <summary>
 /// 打开自己
 /// </summary>
 /// <param name="type"></param>
 public void DoOpen(GlobalDefine.PanelType type)
 {
     if (m_nodeInfoDic.ContainsKey(type))
     {
         NodeInfo nodeInfo = m_nodeInfoDic[type];
         Action   openSelf = delegate() {
             nodeInfo.uiControllerBase.Open();
         };
         if (nodeInfo.uiControllerBase != null)
         {
             List <Order> orderList = new List <Order>();
             SearchNodeInfo(nodeInfo, orderList);
             Preclose(orderList, openSelf);
         }
         else
         {
             DoCreate(type);
             if (nodeInfo.uiControllerBase != null)
             {
                 List <Order> orderList = new List <Order>();
                 SearchNodeInfo(nodeInfo, orderList);
                 Preclose(orderList, openSelf);
             }
         }
         if (nodeInfo.mediator != null)
         {
             AppFacade.Instance.RegisterMediator(nodeInfo.mediator);
         }
     }
     else
     {
         Debug.Log("<color=red>打开错误的节点,UI树种并不存在该节点</color>");
     }
 }
Пример #3
0
 /// <summary>
 /// 销毁自己
 /// </summary>
 /// <param name="type"></param>
 public void DoDestroy(GlobalDefine.PanelType type)
 {
     if (m_nodeInfoDic.ContainsKey(type))
     {
         NodeInfo nodeInfo = m_nodeInfoDic[type];
         nodeInfo.uiControllerBase.Destroy();
         nodeInfo.uiControllerBase = null;
     }
 }
Пример #4
0
    /// <summary>
    /// 创建新的节点
    /// </summary>
    /// <param name="type"></param>
    public void DoCreate(GlobalDefine.PanelType type)
    {
        if (m_nodeInfoDic.ContainsKey(type))
        {
            NodeInfo nodeInfo = m_nodeInfoDic[type];
            if (nodeInfo.uiControllerBase == null)
            {
                UnityEngine.Object asset = Resources.Load(m_nodeInfoDic[type].resource);
                GameObject         ui    = Instantiate(asset) as GameObject;
                ui.SetActive(false);
                RectTransform rectTransform = ui.GetComponent <RectTransform>();
                if (rectTransform != null)
                {
                    rectTransform.SetParent(transform, false);
                }
                Type             classtype  = Type.GetType(nodeInfo.type.ToString() + "View");
                UIControllerBase controller = ui.GetComponent <UIControllerBase>();

                if (controller != null)
                {
                    if (controller.GetType().Equals(classtype))
                    {
                        ui.AddComponent(classtype);
                        controller         = ui.GetComponent <UIControllerBase>();
                        controller.IsCache = nodeInfo.isCache;
                        controller.Create();
                    }
                    else
                    {
                        Debug.Log("已经存在这个控制器了");
                    }
                }
                else
                {
                    ui.AddComponent(classtype);
                    controller         = ui.GetComponent <UIControllerBase>();
                    controller.IsCache = nodeInfo.isCache;
                    controller.Create();
                }
                nodeInfo.uiControllerBase = controller;
                if (!nodeInfo.isControlNode)
                {
                    classtype = Type.GetType(nodeInfo.type.ToString() + "Mediator");
                    if (classtype != null)
                    {
                        Debug.Log(classtype.ToString());
                        nodeInfo.mediator = System.Activator.CreateInstance(classtype, nodeInfo.uiControllerBase as object) as IMediator;
                    }
                    else
                    {
                        nodeInfo.mediator = null;
                        Debug.Log("中继器<color=yellow>" + nodeInfo.type.ToString() + "Mediator</color> is not exists");
                    }
                }
            }
        }
        else
        {
            Debug.Log("节点<color=red>" + type + "</color>尚未被包含在树结构中");
        }
    }