public void OnUIOpen(CUIWindowBase window) { switch (window.UIType) { case UIType.HUD: m_hudStack.Add(window); break; case UIType.Normal: m_normalStack.Add(window); break; case UIType.Dialog: m_dialogStack.Add(window); break; case UIType.Tips: m_tipsStack.Add(window); break; case UIType.Mask: m_maskStack.Add(window); break; } }
public void OnUIClose(CUIWindowBase ui) { switch (ui.UIType) { case UIType.HUD: m_hudStack.Remove(ui); break; case UIType.Normal: m_normalStack.Remove(ui); break; case UIType.Dialog: m_dialogStack.Remove(ui); break; case UIType.Tips: m_tipsStack.Remove(ui); break; case UIType.Mask: m_tipsStack.Remove(ui); break; } }
/// <summary> /// 从cache中删除ui, 如果不在列表里面, 就返回 /// </summary> public static void RemoveUIFromCache(CUIWindowBase window, Dictionary <string, List <CUIWindowBase> > dict) { bool b = IsExitsInCache(window, dict); if (!b) { return; } if (window == null) { throw new Exception("UIManager: RemoveUI error l_UI is null: !"); } if (!dict.ContainsKey(window.name)) { throw new Exception("UIManager: RemoveUI error dont find: " + window.name + " " + window); } if (!dict[window.name].Contains(window)) { throw new Exception("UIManager: RemoveUI error dont find: " + window.name + " " + window); } dict[window.name].Remove(window); }
public void CloseLastUIWindow(UIType uiType = UIType.Normal) { CUIWindowBase window = GetLastUI(uiType); if (window != null) { CUIManager.Instance.CloseUI(window); } }
public void DestroyUI(CUIWindowBase UI) { Debug.Log("UIManager DestroyUI " + UI.name); CUIManagerHelper.RemoveUIFromCache(UI, HiddenDict); CUIManagerHelper.RemoveUIFromCache(UI, ActiveDict); Destroy(UI.gameObject); }
/// <summary> /// 从隐藏状态中 显示ui, /// </summary> public CUIWindowBase RevealUI(CUIWindowBase view) { try { view.OnReveal(); } catch (Exception e) { Debug.LogError(view.UIName + " OnShow Exception: " + e.ToString()); } return(view); }
public CUIWindowBase HideUI(CUIWindowBase window) { try { window.OnHide(); } catch (Exception e) { Debug.LogError(window.UIName + " OnShow Exception: " + e.ToString()); } return(window); }
//退出动画播放完毕回调 public void EndExitAnim(CUIWindowBase l_UIbase, UICallBack callBack) { l_UIbase.OnCompleteExitAnim(); try { callBack?.Invoke(l_UIbase); } catch (Exception e) { Debug.LogError(e.ToString()); } }
public static bool IsExitsInCache(CUIWindowBase window, Dictionary <string, List <CUIWindowBase> > dict) { if (window == null) { return(false); } if (!dict.ContainsKey(window.name)) { return(false); } return(dict[window.name].Contains(window)); }
private void InternalCloseUI(CUIWindowBase window, params object[] objs) { try { window.OnClose(); } catch (Exception e) { Debug.LogError(window.UIName + " OnClose Exception: " + e.ToString()); } StackManager.OnUIClose(window); CUIManagerHelper.AddUIToCache(window, HiddenDict); }
public static void AddUIToCache(CUIWindowBase window, Dictionary <string, List <CUIWindowBase> > dict) { if (window == null) { return; } if (!dict.ContainsKey(window.name)) { dict.Add(window.name, new List <CUIWindowBase>()); } dict[window.name].Add(window); }
/// <summary> /// 根据类型关闭一个ui /// </summary> public void CloseUI <T>(bool isPlayAnim = true, UICallBack callback = null, params object[] objs) where T : CUIWindowBase { string winName = typeof(T).Name; CUIWindowBase window = CUIManagerHelper.GetUIFromCache(winName, ActiveDict); if (window == null) { Debug.LogError("CloseUIWindow Error UI ->" + winName + "<- not Exist!"); return; } CloseUI(window, isPlayAnim, callback, objs); }
public void OpenUI <T>(UICallBack callback = null, params object[] objs) where T : CUIWindowBase { string winName = typeof(T).Name; CUIWindowBase window = CUIManagerHelper.GetUIFromCache(winName, HiddenDict); if (window == null) { CreateUI <T>(go => { window = go.GetComponent <T>(); InternalOpenUI(window, callback, objs); }); return; } InternalOpenUI(window, callback, objs); }
/// <summary> /// 获取一个隐藏的UI,如果有多个同名UI,则返回最后创建的那一个 /// </summary> /// <param name="winName">UI名</param> /// <returns></returns> public static CUIWindowBase GetUIFromCache(string winName, Dictionary <string, List <CUIWindowBase> > dict) { if (!dict.ContainsKey(winName)) { return(null); } int count = dict[winName].Count; if (count == 0) { return(null); } CUIWindowBase ui = dict[winName][count - 1]; //默认返回最后创建的那一个 return(ui); }
private void InternalCreateUI <T>(GameObject go) where T : CUIWindowBase { string winName = typeof(T).Name; CUIWindowBase window = go.GetComponent <CUIWindowBase>(); try { int id = CUIManagerHelper.GetUIIDFromCache(winName, ActiveDict); window.Init(id); window.OnCreated(); } catch (Exception e) { Debug.LogError("OnInit Exception: " + e.ToString()); } window.OnHide(); CUIManagerHelper.AddUIToCache(window, HiddenDict); LayerManager.SetLayer(window); //设置层级 }
private void InternalOpenUI(CUIWindowBase window, UICallBack callback, params object[] objs) { if (window == null) { throw new Exception("UIManager: InternalOpenUI window is null"); } CUIManagerHelper.RemoveUIFromCache(window, HiddenDict); CUIManagerHelper.AddUIToCache(window, ActiveDict); StackManager.OnUIOpen(window); try { window.OnOpen(objs); } catch (Exception e) { Debug.LogError(window.UIName + " OnOpen Exception: " + e); } AnimManager.StartEnterAnim(window, callback); //播放动画 }
/// <summary> /// 关闭传入的ui实例 /// </summary> public void CloseUI(CUIWindowBase window, bool isPlayAnim = true, UICallBack callback = null, params object[] objs) { CUIManagerHelper.RemoveUIFromCache(window, ActiveDict); if (callback != null) { callback += InternalCloseUI; } else { callback = InternalCloseUI; } //不播放动画直接调用回调 if (!isPlayAnim) { callback(window, objs); return; } AnimManager.StartExitAnim(window, callback); }
public void SetLayer(CUIWindowBase window) { RectTransform rt = window.GetComponent <RectTransform>(); switch (window.UIType) { case UIType.HUD: window.transform.SetParent(m_hudLayer); break; case UIType.Normal: window.transform.SetParent(m_normalLayer); break; case UIType.Dialog: window.transform.SetParent(m_dialogLayer); break; case UIType.Tips: window.transform.SetParent(m_tipsLayer); break; case UIType.Mask: window.transform.SetParent(m_maskLayer); break; } rt.localScale = Vector3.one; rt.sizeDelta = Vector2.zero; rt.anchorMin = Vector2.zero; rt.anchorMax = Vector3.one; rt.anchoredPosition = Vector3.zero; rt.SetAsLastSibling(); }
//开始调用进入动画 public void StartEnterAnim(CUIWindowBase l_UIbase, UICallBack callBack) { StartCoroutine(l_UIbase.EnterAnim(EndEnterAnim, callBack)); }
public CUIWindowBase HideUI(string winName) { CUIWindowBase ui = CUIManagerHelper.GetUIFromCache(winName, ActiveDict); return(HideUI(ui)); }
public CUIWindowBase ShowUI(string viewName) { CUIWindowBase ui = CUIManagerHelper.GetUIFromCache(viewName, ActiveDict); return(RevealUI(ui)); }