protected virtual void DrawSubArea(SubAreaContext subAreaCtx)
        {
            var rect = subAreaCtx.GetRealRect(width, height - toolBarHeight);

            rect.position += new Vector2(0, toolBarHeight);
            GUILayout.BeginArea(rect);
            if (Event.current.type == EventType.Repaint)
            {
                new GUIStyle("flow background").Draw(new Rect(Vector2.zero, rect.size), false, false, false, false);
                //绘制背景颜色
                GL.PushMatrix();
                CreateLineMaterial();
                lineMaterial.SetPass(0);
                GLHelper.DrawRectSolid(new Vector2(0, 0), rect.size, subAreaCtx.m_areaDef.m_bgColor);
                GL.PopMatrix();
            }
            if (subAreaCtx.m_areaDef.m_isCanvas)
            {
                DrawCanvas(subAreaCtx as CanvasContext);
            }
            else
            {
                OnDrawSubArea(subAreaCtx);
            }
            GUILayout.EndArea();
        }
 protected virtual void OnLeaveSubArea(SubAreaContext subAreaCtx)
 {
     if (subAreaCtx == null)
     {
         return;
     }
     UnityEngine.Debug.Log("Leave SubArea:" + subAreaCtx.m_areaDef.m_showName);
 }
 protected virtual void OnDrawSubArea(SubAreaContext subAreaCtx)
 {
     GUILayout.Label(subAreaCtx.m_areaDef.m_showName);
     if (subAreaCtx.m_areaDef.m_showName == "DebugInfos")
     {
         DrawDebugInfos();
     }
 }
 protected virtual void ProcessEventInSubArea(SubAreaContext subAreaCtx)
 {
 }
 protected virtual void OnEnterSubArea(SubAreaContext subAreaCtx)
 {
     UnityEngine.Debug.Log("Leave SubArea:" + subAreaCtx.m_areaDef.m_showName);
 }