Exemple #1
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 #2
0
 public virtual void Init(string Name, IUIData UIData, IAssurerLoader loader, bool bMonoBehaviour = false)
 {
     mName               = Name;
     mUIData             = UIData;
     mLoader             = loader;
     this.bMonoBehaviour = bMonoBehaviour;
     mAssetPaths         = new List <string>();
     OnInit();
 }
Exemple #3
0
        private IBaseUI CreateUISync(string AssestPath, ref IAssurerLoader Loader)
        {
            var obj = Loader.LoadSync <GameObject>(AssestPath);

            if (obj == null)
            {
                return(null);
            }
            obj.transform.SetParent(MainRoot.UIAttach, false);
            var UI = obj.GetComponent <IBaseUI>();

            if (UI == null)
            {
                UI = obj.AddComponent <VBaseUI>();
            }
            return(UI);
        }
Exemple #4
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 #5
0
 private void CreateUIAsync(string AssestPath, Action <IBaseUI> finishCallback, ref IAssurerLoader Loader)
 {
     Loader.LoadAsync <GameObject>(AssestPath, (obj) => {
         if (obj == null)
         {
             finishCallback.Invoke(null);
             return;
         }
         obj.transform.SetParent(MainRoot.UIAttach, false);
         var UI = obj.GetComponent <IBaseUI>();
         if (UI == null)
         {
             UI = obj.AddComponent <VBaseUI>();
         }
         finishCallback.Invoke(UI);
     });
 }