public void SetLayer(GameObject go, EUILayerType type)
    {
        int        t        = (int)type;
        GameObject layerobj = mLayerDic[t];

        CSAssist.SetParent(mLayerDic[t].transform, go, true);
    }
 private void AddWindowToWidgetRoot <T>(Transform transform)
 {
     UIManager.Instance.CreatePanel <T>((ui) =>
     {
         CSAssist.SetParent(transform, ui.gameObject, true);
     });
 }
    private GameObject CreateLayerGameObject(string name, Transform parent, EUILayerType type)
    {
        GameObject layer = new GameObject(name);

        CSAssist.SetParent(parent, layer);

        RectTransform rectTransform = layer.AddComponent <RectTransform>();;

        rectTransform.anchorMax = Vector2.one;
        rectTransform.anchorMin = Vector2.zero;
        rectTransform.offsetMax = Vector2.zero;
        rectTransform.offsetMin = Vector2.zero;

        int z = ((int)type) * -1;

        //由于界面上存在层级设置,不能再直接修改UILayerType的层级(新增可以  修改不行)  所以之后的z轴修改在这里处理
        layer.transform.localPosition = new Vector3(0f, 0f, z);

        return(layer);
    }
Exemple #4
0
    private IEnumerator StartCreatePanel(Type type, System.Action <UIBase> action)
    {
        string     name = type.ToString();
        GameObject go   = CSResourceManager.Instance.loadUIPanel(name);

        ///如果之前没有加载过m需要去异步去加载
        if (go == null)
        {
            AddLoadUIToList(name);
            while (true)
            {
                yield return(CSAssist.GetWaitForSeconds(0.1f));

                if (IsLoadingUI(name))
                {
                    go = CSResourceManager.Instance.loadUIPanel(name);
                    if (go)
                    {
                        RemoveLoadedUIFromList(name);
                        break;
                    }
                }
                else
                {
                    break;
                }
            }
        }
        ///已经加载完成了
        if (go != null)
        {
            go.SetActive(true);
            go.name = name;
            UIBase ret = go.GetComponent(name) as UIBase;
            if (ret == null)
            {
                ret = go.AddComponent(type) as UIBase;
            }

            if (ret == null)
            {
                CSDebug.LogError("UIManger  is  Error");
            }

            //添加
            Push(ret);
            //TODO 讲UI逻辑后一帧处理,分散CPU压力
            UILayerManager.Instance.SetLayer(go, ret.PanelLayerType);
            yield return(CSAssist.waitForEndOfFrame);

            if (ret == null)
            {
                yield break;
            }

            ret.Init();
            ret.Show();
            if (action != null)
            {
                action(ret);
            }
        }
    }