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