/// <summary> /// 打开UI,同时记录上一层UI /// </summary> /// <param name="uIType">UI脚本的类型</param> /// <param name="preLayerUI">上层UI脚本的引用</param> /// <returns></returns> public static FairyGUIBaseUI Open(Type uIType, FairyGUIBaseUI preLayerUI) { FairyGUIBaseUI t = Game.Scene.GetComponent <FairyGUIComponent>().Create(uIType); // t.preLayerUI = preLayerUI; return(t); }
/// <summary> /// 组件销毁执行的析构函数 /// </summary> public override void Dispose() { if (this.IsDisposed) { return; } //清空层级管理容器 foreach (List <FairyGUIBaseUI> uIList in _LayerDictionary.Values) { if (uIList == null || uIList.Count <= 0) { continue; } for (int i = uIList.Count - 1; i >= 0; i--) { FairyGUIBaseUI uiListItem = uIList[i]; if (uiListItem != null && !uiListItem.IsDisposed) { uiListItem.Dispose(); } } uIList.Clear(); } _LayerDictionary.Clear(); //清空baseUIContainer baseUIContainer.Dispose(); base.Dispose(); }
/// <summary> /// 销毁UI,调用UI组件时,会调用dispose同时销毁gui组件 /// </summary> /// <param name="ui"></param> public void Destory(FairyGUIBaseUI ui) { //从层中移除 _LayerDictionary[ui.UIType].Remove(ui); //从脚本容器中移除(会调用dispose) baseUIContainer.RemoveComponent(ui.GetType()); }
/// <summary> /// 关闭同层ui. /// </summary> /// <param name="ui"></param> public void DestoryLayer(FairyGUIBaseUI ui) { List <FairyGUIBaseUI> uIList = _LayerDictionary[ui.UIType]; if (uIList == null || uIList.Count <= 0) { return; } for (int i = uIList.Count - 1; i >= 0; i--) { FairyGUIBaseUI uiListItem = uIList[i]; if (uiListItem != null && !uiListItem.IsDisposed) { uiListItem.Close(); } } uIList.Clear(); }
/// <summary> /// 非泛型方法创建UI /// </summary> /// <param name="uIType"></param> /// <returns></returns> internal FairyGUIBaseUI Create(Type uIType) { if (baseUIContainer.IsDisposed) { baseUIContainer = ComponentFactory.Create <FairyGUIContainer>(); } FairyGUIBaseUI t = baseUIContainer.GetComponent(uIType) as FairyGUIBaseUI; if (t == null) { t = baseUIContainer.AddComponent(uIType) as FairyGUIBaseUI; t.gObj = MonoInstance.Create(t.pakName, t.cmpName); //加入到对应层中。 _LayerDictionary[t.UIType].Add(t); ShowLayer(); } t.InitUI(); return(t); }
/// <summary> /// 清除所有UI /// </summary> public void DestoryAll() { foreach (List <FairyGUIBaseUI> uIList in _LayerDictionary.Values) { if (uIList == null || uIList.Count <= 0) { continue; } for (int i = uIList.Count - 1; i >= 0; i--) { FairyGUIBaseUI uiListItem = uIList[i]; if (uiListItem != null && !uiListItem.IsDisposed) { uiListItem.Dispose(); } } uIList.Clear(); } baseUIContainer.Dispose(); ShowLayer(); }