/// <summary> /// Funzione che setta il menù corrente a quello del tipo passato. /// </summary> /// <typeparam name="T"></typeparam> /// <returns>Ritorna la conferma dell'azione eseguita</returns> public bool SetCurrentMenu <T>() where T : UIControllerBase { UIControllerBase menuToSet = GetMenu <T>(); if (menuToSet == null) { // non ho trovato il tipo del menù return(false); } else if (currentMenu != null && currentMenu.GetType() == typeof(T)) { // sto riaccendendo il menù corrente return(true); } else { // cambio effettivamente menù for (int i = 0; i < menus.Count; i++) { menus[i].ToggleMenu(false); } currentMenu = menuToSet; currentMenu.ToggleMenu(true); OnCurrentMenuChange(currentMenu); return(true); } }
public void DestroyController(UIControllerBase controller) { if (null != controller) { _controllers.Remove(controller.GetType()); try { controller.Dispose(); } catch (Exception e) { Console.Error.WriteLine(e.Message); Console.Error.WriteLine(e.StackTrace); } } }
/// <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>尚未被包含在树结构中"); } }