当前位置:   article > 正文

Unity编辑器中分割线拖拽的实现_unity 分隔线

unity 分隔线

using UnityEngine;
 using UnityEditor;

 public class GUISplitter : EditorWindow {
     Vector2 posLeft;
     Vector2 posRight;
     GUIStyle styleLeftView;
     GUIStyle styleRightView;
     float splitterPos;
     Rect splitterRect;
     Vector2 dragStartPos;
     bool dragging;
     float splitterWidth = 5;

     // Add menu named "My Window" to the Window menu
     [MenuItem ("GUI/GUISplitter")]
     static void Init () {
            GUISplitter window = (GUISplitter)EditorWindow.GetWindow (
                typeof (GUISplitter));
         window.position = new Rect(200, 200, 200,200);
         window.splitterPos = 100;
     }

     void OnGUI (){
         if (styleLeftView == null)
             styleLeftView = new GUIStyle(GUI.skin.box);
         if (styleRightView == null)
             styleRightView = new GUIStyle(GUI.skin.button);

         GUILayout.BeginHorizontal ();

         // Left view
         posLeft = GUILayout.BeginScrollView (posLeft,
             GUILayout.Width (splitterPos),
             GUILayout.MaxWidth(splitterPos),
             GUILayout.MinWidth(splitterPos));
             GUILayout.Box ("Left View",
                     styleLeftView,
                     GUILayout.ExpandWidth(true),
                     GUILayout.ExpandHeight(true));
         GUILayout.EndScrollView ();

         // Splitter
         GUILayout.Box ("",
             GUILayout.Width(splitterWidth),
             GUILayout.MaxWidth (splitterWidth),
             GUILayout.MinWidth(splitterWidth),
             GUILayout.ExpandHeight(true));
         splitterRect = GUILayoutUtility.GetLastRect ();

         // Right view
         posRight = GUILayout.BeginScrollView (posRight,
             GUILayout.ExpandWidth(true));
             GUILayout.Box ("Right View",
             styleRightView,
             GUILayout.ExpandWidth(true),
             GUILayout.ExpandHeight(true));
         GUILayout.EndScrollView ();

         GUILayout.EndHorizontal ();

         // Splitter events
         if (Event.current != null) {
             switch (Event.current.rawType) {
                 case EventType.MouseDown:
                     if (splitterRect.Contains (Event.current.mousePosition)) {
                         Debug.Log ("Start dragging");
                         dragging = true;
                     }
                     break;
                 case EventType.MouseDrag:
                     if (dragging){
                         Debug.Log ("moving splitter");
                         splitterPos += Event.current.delta.x;
                         Repaint ();
                     }
                     break;
                 case EventType.MouseUp:
                     if (dragging){
                         Debug.Log ("Done dragging");
                         dragging = false;
                     }
                     break;
             }
         }
     }
 }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/92981
推荐阅读
相关标签
  

闽ICP备14008679号