示例#1
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>尚未被包含在树结构中");
        }
    }