Exemple #1
0
        public bool Close(IBaseUI UI)
        {
            var bPop = Pop(UI);

            UI.ClearAssest();
            return(bPop);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
 private void RePush(IBaseUI UI, IUIData UIData)
 {
     if (UIData.InQueue)
     {
         if (mUIStack.Count > 0)
         {
             Hide(mUIStack[mUIStack.Count - 1]);
         }
         mUIStack.Add(UI);
     }
 }
Exemple #4
0
 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);
     }
 }
Exemple #5
0
 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);
 }
Exemple #6
0
        /// <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);
        }
Exemple #7
0
 public void Hide(IBaseUI UI)
 {
     UI.Hide();
 }