/// <summary> /// 释放所有非强制引 /// </summary> private void RelaseAllUnconstrainGrid() { List <uint> showGuideIDs = new List <uint>(); showGuideIDs.AddRange(m_dic_showGuide.Keys); int max = showGuideIDs.Count; if (max > 0) { for (int i = 0; i < max; i++) { ResetGuide(showGuideIDs[i]); } } UIUnconstraintGrid grid = null; while (m_lst_cacheGuideGrid.Count > 0) { grid = m_lst_cacheGuideGrid[0]; m_lst_cacheGuideGrid.RemoveAt(0); if (null != grid) { grid.Destroy(); } } }
/// <summary> /// 缓存非常之引导 /// </summary> /// <param name="grid"></param> private void CacheUnconstrainGrid(uint guideID) { UIUnconstraintGrid guideGrid = null; if (!TryGetUnconstrainGuide(guideID, out guideGrid)) { return; } m_dic_showGuide.Remove(guideID); guideGrid.Release(); if (guideGrid.Visible) { guideGrid.SetVisible(false); } if (!m_lst_cacheGuideGrid.Contains(guideGrid)) { m_lst_cacheGuideGrid.Add(guideGrid); } if (m_lst_cacheGuideGrid.Count > CACHE_MAX_UNCONSTRAIN_NUM) { int needDestoryNum = m_lst_cacheGuideGrid.Count - CACHE_MAX_UNCONSTRAIN_NUM; UIUnconstraintGrid tempGrid = null; for (int i = 0; i < needDestoryNum; i++) { tempGrid = m_lst_cacheGuideGrid[0]; m_lst_cacheGuideGrid.RemoveAt(0); tempGrid.Destroy(); } } }