public static void Add(UIData data) { if (data == null) { return; } if (m_UIDataMap.ContainsKey(data.uiID)) { Log.w("Already Add UIData:" + data.uiID); return; } m_UIDataMap.Add(data.uiID, data); m_UINameDataMap.Add(data.shortName, data); }
public void LoadPanelResAsync() { if (m_PanelState != ePanelState.UnInit) { return; } m_PanelState = ePanelState.Loading; UIData data = UIDataTable.Get(m_UIID); if (data == null) { return; } OpenParam info = GetOpenInfo(m_NextMaster); object[] args = null; if (info != null) { args = info.Args; } if (m_ResLoader == null) { m_ResLoader = ResLoader.Allocate("PanelInfo"); } CollectDynamicResource(data, m_ResLoader, args); m_ResLoader.Add2Load(data.fullPath, (state, res) => { if (!state) { return; } OnPanelResLoadSuccess((GameObject)res.asset); }); m_ResLoader.LoadSync(); }
private PanelInfo LoadPanelInfo(int uiID) { UIData data = UIDataTable.Get(uiID); if (data == null) { Log.e("Failed to OpenPanel, Not Find UIData for UIID:" + uiID); return(null); } bool needAdd = true; PanelInfo panelInfo = GetPanelFromCache(uiID, true); if (panelInfo == null) { //缓存中没有,判断当前Panel 是否只支持单例 if (data.isSingleton) { //去当前所有已经开启的面板中寻找 panelInfo = GetPanelFromActive(uiID); } if (panelInfo == null) { panelInfo = ObjectPool <PanelInfo> .S.Allocate(); panelInfo.Set(uiID, nextPanelID); } else { needAdd = false; } } if (needAdd) { AddPanelInfo(panelInfo); } return(panelInfo); }
public void UnShortCachePanel <T>(T uiID, bool clean = true) where T : IConvertible { UIData data = UIDataTable.Get(uiID.ToInt32(null)); if (data == null) { return; } --data.shortCacheCount; if (data.cacheCount > 0) { return; } if (!clean) { return; } for (int i = m_CachedPanelList.Count - 1; i >= 0; --i) { if (i >= m_CachedPanelList.Count) { continue; } PanelInfo panelInfo = m_CachedPanelList[i]; UIData data2 = UIDataTable.Get(panelInfo.uiID); if (data2.cacheCount < 1) { m_CachedPanelList.RemoveAt(i); GameObject.Destroy(panelInfo.abstractPanel.gameObject); ObjectPool <PanelInfo> .S.Recycle(panelInfo); } } }
public static RectTransform FindTransformInPanel(string targetPanelName, string targetUINodePath) { UIData data = UIDataTable.Get(targetPanelName); if (data == null) { return(null); } //string panelName = string.Format("{0}(Clone)", targetPanelName); AbstractPanel panel = UIMgr.S.FindPanel(data.uiID); //UIMgr.S.uiRoot.panelRoot.Find(targetPanelName); if (panel == null) { return(null); } Transform targetPanel = panel.transform; if (targetPanel == null) { //Log.w("# FindTransformInPanel Not Find Panel:" + panelName); return(null); } if (string.IsNullOrEmpty(targetUINodePath)) { return(targetPanel as RectTransform); } RectTransform result = targetPanel.Find(targetUINodePath) as RectTransform; if (result == null || !result.gameObject.activeSelf) { //Log.w(string.Format("# FindTransformInPanel Not Find Node:{0}/{1}", panelName, targetUINodePath)); return(null); } return(result); }