public void UpdateChild(ViewAttr tViewAttr) { if (!mViewList.Contains(tViewAttr)) { return; } int index = mViewList.IndexOf(tViewAttr); for (int i = 0; i < tViewAttr.mRendererLayerList.Count; i++) { Transform trans = tViewAttr.mRendererLayerList[i]; Canvas panel = trans.GetComponent <Canvas>(); if (panel != null) { curDepth = panel.sortingOrder; break; } else { RendererAttr attr = trans.GetComponent <RendererAttr>(); if (attr != null) { if (attr.mRenderer.Length > 0) { curDepth = attr.mRenderer[0].sortingOrder; break; } } } } for (int i = index; i < mViewList.Count; i++) { AutoSetOrder(mViewList[i]); } }
void AutoSetOrder(ViewAttr tViewAttr) { List <Transform> mRendererLayerList = tViewAttr.mRendererLayerList; for (int i = 0; i < mRendererLayerList.Count; i++) { Transform trans = mRendererLayerList[i]; Canvas panel = trans.GetComponent <Canvas>(); if (panel != null) { panel.sortingOrder = curDepth; curDepth++; } else { RendererAttr attr = trans.GetComponent <RendererAttr>(); if (attr != null) { Renderer[] mRenderer = attr.mRenderer; for (int j = 0; j < mRenderer.Length; j++) { mRenderer[j].sortingOrder = curDepth; curDepth++; } } if (panel == null && attr == null) { Debug.LogError(string.Format("物体:{0}的ViewAttr组件的mRendererLayerList列表中只能添加带Canvas或者RenderAttr组件的Transform,", "物体{1}没有添加这两个组件中任何一个", tViewAttr.gameObject.name, trans.gameObject.name)); } } } }
public void RemoveRenderer(RendererAttr tRendererAttr) { if (mRendererLayerList.Contains(tRendererAttr.transform)) { mRendererLayerList.Remove(tRendererAttr.transform); } _ViewManager.UpdateView(this); }
/// <summary> /// 获取GameObject /// 注意: /// 界面加载的对象:一种普通的ui对象,另外一种特效,普通ui对象的层次需要手动设置,特效的话,可能有render属性, /// 显示等级同Canvas,为了方便管理层次,规定:所有特效的根物体都要挂RendererAttr脚本,层次从低到高顺序添加特效包含的几个renders /// </summary> /// <param name="tPath"></param> /// <returns></returns> public GameObject GetGameObject(string tPath) { GameObject mObj = _AssetManager.GetGameObject(tPath); RendererAttr mRendererAttr = mObj.GetComponent <RendererAttr>(); if (mRendererAttr != null) { mViewAttr.AddRenderer(mRendererAttr); } RecordLoadPath(tPath); return(mObj); }