简单节点编辑器(二)

作者: 小小小小小丶敏 | 来源:发表于2017-09-25 15:20 被阅读13次

    上次的拖动窗口已经画出来了,这次我们看看怎么将两个窗口用连线连接起来吧。我们在上一篇的程序中,再增加一些代码,如下

    using UnityEngine;  
    using UnityEditor;  
    public class NodeEditor : EditorWindow {  
        //窗口的矩形  
        Rect windowRect = new Rect(50, 50, 150, 100);  
        Rect windowRect2 = new Rect(100, 100, 150, 100);  
        //窗口的ID  
        int windownID = 0;  
        int windownID2 = 0;  
        static void ShowEditor() {  
            NodeEditor editor = EditorWindow.GetWindow<NodeEditor>();  
        }  
        void OnGUI() {  
            //绘画窗口  
            BeginWindows();  
            windowRect = GUI.Window(windownID, windowRect, DrawNodeWindow, "Demo Window");  
            windowRect2 = GUI.Window(windownID2,windowRect2,DrawNodeWindow,"Demo Window2");  
            EndWindows();  
            //连接窗口  
            DrawNodeCurve(windowRect,windowRect2);  
        }  
        //绘画窗口函数  
        void DrawNodeWindow(int id) {  
            //创建一个GUI Button  
            if (GUILayout.Button("Link")) {  
                Debug.Log("Clikc Link Button");  
            }  
            //设置改窗口可以拖动  
            GUI.DragWindow();  
        }  
          
        void DrawNodeCurve(Rect start, Rect end , Color color) {  
            Vector3 startPos = new Vector3(start.x + start.width, start.y + start.height / 2, 0);  
            Vector3 endPos = new Vector3(end.x, end.y + end.height / 2, 0);  
            Vector3 startTan = startPos + Vector3.right * 50;  
            Vector3 endTan = endPos + Vector3.left * 50;  
            Handles.DrawBezier(startPos, endPos, startTan, endTan, color, null, 4);  
        }  
    }  
    
    运行Editor,出现这样的效果,是不是很帅气?当然,这还只是一些初步的代码,不过还是分享给大家学习,祝大家早日做好节点编辑器

    相关文章

      网友评论

        本文标题:简单节点编辑器(二)

        本文链接:https://www.haomeiwen.com/subject/dfhdextx.html