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); }
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); } } }