protected void RemoveChildPanel(int uitag, UIPanelParent childUIPanel)
 {
     if (SubPanelDic.ContainsKey(uitag))
     {
         SubPanelDic[uitag].Remove(childUIPanel);
     }
     else
     {
         AFLogger.e("父级面板并不包含此子级面板,请注意");
     }
 }
Exemple #2
0
 /// <summary>
 /// 释放单个UI面板,根据UITag与obj,一般是给面板的closeself调用
 /// </summary>
 public void CloseUI(int UITag, UIPanelParent panel, int CacheCount = -1, bool destoryCache = false,
                     bool recycleParent = true)
 {
     if (UITagToScriptsName.ContainsKey(UITag))
     {
         CloseUI(UITagToScriptsName[UITag], panel, CacheCount, destoryCache, recycleParent);
     }
     else
     {
         AFLogger.e("当前并不存在 : " + UITag + "面板");
     }
 }
 protected void AddChildPanel(int uitag, UIPanelParent childUIPanel)
 {
     if (SubPanelDic.ContainsKey(uitag))
     {
         SubPanelDic[uitag].AddValue(childUIPanel);
     }
     else
     {
         List <UIPanelParent> panelList = new List <UIPanelParent>();
         panelList.Add(childUIPanel);
         SubPanelDic.Add(uitag, panelList);
     }
 }
 public void Open(int UITag, string UIPath, UIDataParent UIDataParent = null, ResFromType resFromType = ResFromType.ABRes,
                  UIPanelParent ParentPanel = null)
 {
     this.UITag       = UITag;
     this.resFromType = resFromType;
     this.ParentPanel = ParentPanel;
     this.UIPath      = UIPath;
     if (!isInit)
     {
         TransformBind();
         InitUI(UIDataParent);
         RegisterUIEvent();
         isInit = true;
     }
     InitUIAll(UIDataParent);
 }
Exemple #5
0
 protected void CloseUI(string scriptName, UIPanelParent panel, int CacheCount = -1,
                        bool destoryCache = false, bool recycleParent = true)
 {
     //面板销毁 : 因此首先销毁其父物体与子物体
     if (CacheCount == 0)
     {
         panel.RecycleParAndChild();
     }
     resLoader.ReleaseObj(ScriptsNameToPanel[scriptName].gameObject, CacheCount, destoryCache, recycleParent);
     RemoveParentPanel(scriptName);
     UITagToScriptsName.Remove(GetUITagByScriptName(scriptName));
     if (ScriptsNameToPanel.ContainsKey(scriptName))
     {
         ScriptsNameToPanel.Remove(scriptName);
     }
 }
 public void RecycleParAndChild()
 {
     //从其父类面板中移除
     if (ParentPanel != null)
     {
         ParentPanel.RemoveChildPanel(UITag, this);
         ParentPanel = null;
     }
     //物体被销毁,其内的子物体也一同销毁,防止内存泄漏
     SubPanelDic.ForEach((uitag, panelList) =>
     {
         panelList.ForEach((panel) =>
         {
             //isRemoveFromPar : false不要从父物体中移除,避免引起SubPanelDic的变化
             panel.CloseSelf(0, true, isRemoveFromPar: false);
         });
     });
     Destroy();
 }