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(); }
private void Listenr(GameObject go) { if (!imageWorker.ContainsKey(go)) { return; } EWORKER worker = imageWorker[go]; ProcessCtrl.Instance.GoCoroutine("ShowWorker", ShowWorker(worker)); }
public override void Awake() { base.Awake(); workerGo = new Dictionary <EWORKER, GameObject> { { EWORKER.Worker_fangyu, Fangyu_obj }, { EWORKER.Worker_fuzhu, Fuzhu_obj }, { EWORKER.Worker_gongshou, Gongshou_obj }, { EWORKER.Worker_shuchu, Shuchu_obj }, { EWORKER.Worker__moushi, Moushi_obj } }; gle = Content_obj.GetComponent <GridLayerExpand>(); sr = ScrollView_obj.GetComponent <ScrollRect>(); rt = Content_obj.GetComponent <RectTransform>(); lockobj = Instantiate(Lock, transform, false).transform; HeroData[] allHero = HeroMgr.GetSingleton().Heros; //英雄分类 heroGo = new Dictionary <HeroInfo, Transform>(); for (int i = allHero.Length - 1; i >= 0; --i) { EWORKER worker = (EWORKER)allHero[i].JsonData.type; GameObject info = Instantiate(HeadInfo, workerGo[worker].transform, false); HeroInfo heroInfo = info.GetComponent <HeroInfo>(); heroInfo.SetData(allHero[i]); EventListener.Get(info).OnClick = e => { if (isDrag) { return; } UIFace.GetSingleton().Open(UIID.HeroDetail, heroInfo.heroData.HeroId); }; EventListener.Get(info).BegineDragEvent = e => { isDrag = true; sr.OnBeginDrag(e); }; EventListener.Get(info).DragEvent = e => { sr.OnDrag(e); }; EventListener.Get(info).EndDragEvent = e => { isDrag = false; sr.OnEndDrag(e); }; heroGo.Add(heroInfo, info.transform); } foreach (var item in workerGo) { item.Value.SetActive(false); } //图片分类 imageWorker = new Dictionary <GameObject, EWORKER> { { all_img.gameObject, EWORKER.ALL }, { shuchu_img.gameObject, EWORKER.Worker_shuchu }, { fangyu_img.gameObject, EWORKER.Worker_fangyu }, { gongshou_img.gameObject, EWORKER.Worker_gongshou }, { fuzhu_img.gameObject, EWORKER.Worker_fuzhu }, { moushi_img.gameObject, EWORKER.Worker__moushi } }; TriggerListenr(); }