Пример #1
0
    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();
    }
Пример #2
0
 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);
 }