protected void SetSortingOrder_Effect(int _nNewOrder) { foreach (Renderer renderer in EffectRenderer) { renderer.sortingOrder = USpeedUILayerManager.CheckSortingOrderRange(_nNewOrder); } }
private void DrawSortingLayer() { targetUILayerElement.IsUseSortingLayerOffset = EditorGUILayout.Toggle("是否设置层级偏移值", targetUILayerElement.IsUseSortingLayerOffset); if (targetUILayerElement.IsUseSortingLayerOffset) { EditorGUILayout.Space(); GUILayout.BeginHorizontal(); if (GUILayout.Button("-")) { targetUILayerElement.SortingLayerOrderOffset--; } GUILayout.Label(targetUILayerElement.SortingLayerOrderOffset.ToString(), EditorGUIUtils.wrapCenterLabelStyle); if (GUILayout.Button("+")) { targetUILayerElement.SortingLayerOrderOffset++; } if (GUILayout.Button("归零")) { targetUILayerElement.SortingLayerOrderOffset = 0; } GUILayout.EndHorizontal(); EditorGUILayout.LabelField("当前所在Layer的序号:", USpeedUILayerManager.CalculateLayerElementOrder(targetUILayerElement).ToString()); //(targetUILayerElement.SortingLayerOrder + targetUILayerElement.SortingLayerOrderOffset + targetUILayerElement.SortingLayrOrderParentOffset).ToString()); } else { //if((targetUILayerElement.SortingLayerOrder + targetUILayerElement.SortingLayerOrderOffset + targetUILayerElement.SortingLayrOrderParentOffset > 0)) if (USpeedUILayerManager.CalculateLayerElementOrder(targetUILayerElement) > 0) { targetUILayerElement.SortingLayerOrder = 0; targetUILayerElement.SortingLayerOrderOffset = 0; } } }
protected override void PostSetVisible(bool _bVisible) { if (m_wndView == null) { return; } if (_bVisible) { //有全屏窗口显示中并当前WND_LAYER_POPUP01类型窗口需要显示时,将其提升到WND_LAYER_POPUP02层进行显示 if (GetLayer() == WndLayerDef.WND_LAYER_POPUP01) { UISystem.Instance.SetWndRenderAfterTheFillLayer(m_wndView, WndLayerDef.WND_LAYER_POPUP02); } //Popup类型显示时顶置 if ((GetLayer() == WndLayerDef.WND_LAYER_POPUP01 || GetLayer() == WndLayerDef.WND_LAYER_POPUP02)) { UISystem.Instance.SetMutexWndVisbleAlone(this.m_wndView, WndLayerDef.WND_LAYER_POPUP01, WndLayerDef.WND_LAYER_FILL, WndLayerDef.WND_LAYER_POPUP02); if (m_wndView.GetTransform() != null) { m_wndView.GetTransform().SetAsLastSibling(); //System.Diagnostics.Stopwatch watch = new System.Diagnostics.Stopwatch(); //StringBuilder sb = new StringBuilder(); //watch.Start(); //重新算该层级下所有界面的层级数 USpeedUILayer layer = USpeedUILayerManager.GetUILayer(GetLayer()); if (layer != null) { RectTransform LayerTrans = layer.GetRectTransform; if (LayerTrans != null) { int count = LayerTrans.childCount; for (int i = 0; i < count; ++i) { USpeedUILayerElement element = LayerTrans.GetChild(i).GetComponent <USpeedUILayerElement>(); if (element != null) { LayerTrans.GetChild(i).GetComponent <USpeedUILayerElement>().SetSortingOrder(); } } } } } //watch.Stop(); //sb.Append(m_wndView.gameObject.name + " time:" + watch.Elapsed.TotalMilliseconds); //Debug.LogWarning(sb.ToString()); } } else { UISystem.Instance.RemoveWndRenderAfterFillLayerVisible(this); //隐藏的时候还原回原来的层 UISystem.Instance.AddView(m_wndView, GetLayer()); } }
// 销毁 public virtual void Destroy() { //移除Drag事件 canDrag = false; canUseImageEffect = false; //移除该View用到的动态Sprite USpriteManager.Instance.DeleteSprite(m_wnd.GetID()); USpeedUILayerManager.UnRegisterWndViewForLayer(this); }
private void InitLayer() { m_layerTransform = new RectTransform[(int)WndLayerDef.WND_LAYER_MAX]; m_layerTransform[(int)WndLayerDef.WND_LAYER_FIXED] = (RectTransform)transform.GetChild(0); m_layerTransform[(int)WndLayerDef.WND_LAYER_POPUP01] = (RectTransform)transform.GetChild(1); m_layerTransform[(int)WndLayerDef.WND_LAYER_FILL] = (RectTransform)transform.GetChild(2); m_layerTransform[(int)WndLayerDef.WND_LAYER_POPUP02] = (RectTransform)transform.GetChild(3); m_layerTransform[(int)WndLayerDef.WND_LAYER_OVERHEAD] = (RectTransform)transform.GetChild(4); m_canvas.sortingLayerName = USpeedUILayerManager.CalculateLayerName(WndLayerDef.WND_LAYER_MAX); m_canvas.sortingOrder = USpeedUILayerManager.CalculateLayerOrder(WndLayerDef.WND_LAYER_MAX); SetupUILayer(WndLayerDef.WND_LAYER_FIXED); SetupUILayer(WndLayerDef.WND_LAYER_POPUP01); SetupUILayer(WndLayerDef.WND_LAYER_FILL); SetupUILayer(WndLayerDef.WND_LAYER_POPUP02); SetupUILayer(WndLayerDef.WND_LAYER_OVERHEAD); }
public void SetSortingOrder() { if (!IsUseSortingLayerOffset) { return; } int _nNewOrder = USpeedUILayerManager.CalculateLayerElementOrder(this);//SortingLayerOrder + SortingLayerOrderOffset + SortingLayrOrderParentOffset; switch (UILayerElementType) { case EUILayerElementType.ELET_UI: SetSortingOrder_UI(_nNewOrder); break; case EUILayerElementType.ELET_Effect: SetSortingOrder_Effect(_nNewOrder); break; default: break; } //Debug.LogWarning("注册UIElement:" + this.gameObject.name + ",层级为:" + _nNewOrder); }
// IUIWndView // 初始化 public virtual bool Init(IUIWnd wnd) { m_wnd = wnd; USpeedUILayerManager.RegisterWndViewForLayer(this); return(true); }
public void UnRegisterUILayer() { USpeedUILayerManager.UnRegisterUILayer(UILayerDef, this); }
protected void SetSortingOrder_UI(int _nNewOrder) { UICanvasRenderer.overrideSorting = true; UICanvasRenderer.sortingOrder = USpeedUILayerManager.CheckSortingOrderRange(_nNewOrder); }
public void UnRegisterUIElement() { USpeedUILayerManager.UnRegisterElementForLayer(UILayer, this); }