private void BuildFrameVisibilityComponent() { if (m_frameInfo.FrameRoot == null) { Debug.LogError($"{m_frameInfo.ResName} can't find root gameobject"); } if (m_frameCanvases != null) { Debug.LogWarning($"{m_frameInfo.ResName} already initialized"); } m_frameCanvases = m_frameInfo.FrameRoot.GetComponentsInChildren <Canvas>(true); m_canvasRenderers = m_frameInfo.FrameRoot.GetComponentsInChildren <Renderer>(true); m_graphicRaycasters = m_frameInfo.FrameRoot.GetComponentsInChildren <GraphicRaycaster>(true); //init GUIFrame All Canvas Depth for (int i = 0; i < m_frameCanvases.Length; ++i) { CanvasDepthInfo canvasRawDepthInfo = new CanvasDepthInfo(m_frameCanvases[i]); this.m_frameAllCanvasDepthList.Add(canvasRawDepthInfo); } m_frameAllCanvasDepthList = m_frameAllCanvasDepthList.OrderByDescending(canvasDepth => canvasDepth.CurrentDepth).ToList(); FrameDepth = this.m_frameInfo.UIRootCanvas.sortingOrder; this.m_isDirty = false; }
/// <summary> /// 将当前窗口置顶 /// </summary> public void SetFrameToTopside() { GUIFrame currentTopsideFrame = FrameMgr.Instance.GetTopsideFrame(); if (currentTopsideFrame != this.m_frameInfo) { int diffDepth = currentTopsideFrame.FrameDepth + 1; for (int i = 0; i < m_frameAllCanvasDepthList.Count; ++i) { CanvasDepthInfo canvasRawDepthInfo = this.m_frameAllCanvasDepthList[i]; canvasRawDepthInfo.SetDiffDepth(diffDepth); } FrameDepth += diffDepth; FrameMgr.Instance.SetFrameDepthChanged(this.m_frameInfo); } }
/// <summary> /// 重置窗口深度 /// </summary> public void ResetFrameRenderDepth() { if (!FrameIsRawDepth()) { if (this.m_frameAllCanvasDepthList.Count > 0 && this.m_frameAllCanvasDepthList[0].AdjustDiffDepth != 0) { int adjuestDepth = this.m_frameAllCanvasDepthList[0].AdjustDiffDepth; for (int i = 0; i < this.m_frameAllCanvasDepthList.Count; ++i) { CanvasDepthInfo canvasDepthInfo = this.m_frameAllCanvasDepthList[i]; canvasDepthInfo.Reset(); } FrameDepth -= adjuestDepth; FrameMgr.Instance.SetFrameDepthChanged(this.m_frameInfo); } } }