private IEnumerator ShowWorker(EWORKER worker) { List <HeroInfo> show = ListPool <HeroInfo> .Get(); HeroInfo[] showList = Content_obj.GetComponentsInChildren <HeroInfo>(); for (int i = 0, count = showList.Length; i < count; ++i) { showList[i].transform.SetParent(workerGo[(EWORKER)showList[i].Type].transform, false); } if (workerGo.ContainsKey(worker)) { HeroInfo[] showList2 = workerGo[worker].GetComponentsInChildren <HeroInfo>(); for (int i = 0, count = showList2.Length; i < count; ++i) { if (showList2[i].Type == (int)worker) { show.Add(showList2[i]); } } } else { foreach (var item in workerGo) { show.AddRange(item.Value.GetComponentsInChildren <HeroInfo>()); } } _sortHero(show); int minus = 0; for (int i = 0, length = show.Count; i < length; ++i) { if (!show[i].heroData.UnLock) { if (!lockobj.gameObject.activeInHierarchy) { lockobj.gameObject.SetActive(true); } lockobj.SetParent(Content_obj.transform, false); minus = 1; } show[i].transform.SetParent(Content_obj.transform, false); if (i == length - 1 && lockobj.gameObject.activeInHierarchy && lockobj.parent != Content_obj.transform) { lockobj.gameObject.SetActive(false); minus = 0; } Show(show[i]); } ListPool <HeroInfo> .Release(show); yield return(new WaitForEndOfFrame()); int plus = lockobj.gameObject.activeInHierarchy ? 1 : 0; float maxHeight = (Mathf.CeilToInt((Content_obj.transform.childCount - minus) * 0.5f)) * (gle.spacing.y + gle.cellSize.y) + gle.ignorerSize.y * plus; float maxWidth = (gle.spacing.x + gle.cellSize.x) * 2; rt.sizeDelta = new Vector2(maxWidth, maxHeight); gle.Execute(); }
public void Close() { HeroInfo[] showList = Content_obj.GetComponentsInChildren <HeroInfo>(); for (int i = 0, count = showList.Length; i < count; ++i) { showList[i].Close(); showList[i].transform.SetParent(workerGo[(EWORKER)showList[i].Type].transform, false); } ZEventSystem.DeRegister(EventConst.HEROINFOCHANGE); }