public bool Close(IBaseUI UI) { var bPop = Pop(UI); UI.ClearAssest(); return(bPop); }
public void OpenAsync(string AssestPath, IUIData UIData, Action <IBaseUI> finishCallback = null, bool bMonoBehaviour = false) { IBaseUI ui = CheckCache(AssestPath, UIData); if (ui != null) { if (finishCallback != null) { finishCallback.Invoke(ui); } return; } IAssurerLoader loader = VLoader.EasyGet(); CreateUIAsync(AssestPath, (UI) => { if (UI == null && finishCallback != null) { finishCallback.Invoke(null); return; } Push(UI, UIData); UI.Init(AssestPath, UIData, loader, bMonoBehaviour); UI.Show(); if (finishCallback != null) { finishCallback.Invoke(UI); } }, ref loader); }
private void RePush(IBaseUI UI, IUIData UIData) { if (UIData.InQueue) { if (mUIStack.Count > 0) { Hide(mUIStack[mUIStack.Count - 1]); } mUIStack.Add(UI); } }
private static void DestroyUI(IBaseUI ui) { ui.OnHide(); if (ui.gameObject.transform.parent == Layer(UILayer.Main)) { ui.gameObject.SetActive(false); _uiCache[ui.UIType] = ui; } else { ui.OnDetach(); GameObject.Destroy(ui.gameObject); } }
private bool Pop(IBaseUI UI) { if (!UI.UIData.InQueue) { return(false); } if (mUIStack.Count == 0 || !(mUIStack[mUIStack.Count - 1] == UI)) { return(false); } mUIStack.Remove(UI); if (mUIStack.Count > 0) { mUIStack[mUIStack.Count - 1].Show(); } return(true); }
/// <summary> /// 通用打开方法 /// </summary> /// <param name="AssestPath">资产路径</param> /// <param name="UIData">UI数据</param> /// <param name="bMonoBehaviour">UI是否开启生命周期</param> public IBaseUI Open(string AssestPath, IUIData UIData, bool bMonoBehaviour = false) { IBaseUI UI = CheckCache(AssestPath, UIData); if (UI != null) { return(UI); } IAssurerLoader loader = VLoader.EasyGet(); UI = CreateUISync(AssestPath, ref loader); if (UI == null) { return(UI); } Push(UI, UIData); UI.Init(AssestPath, UIData, loader, bMonoBehaviour); UI.Show(); return(UI); }
public void Hide(IBaseUI UI) { UI.Hide(); }