【unity3d Editor开发】简单节点编辑器(二)

来源:互联网 发布:软件升级必然凯文凯利 编辑:程序博客网 时间:2024/04/30 04:30

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

using UnityEngine;using UnityEditor;public class NodeEditor : EditorWindow {//窗口的矩形Rect windowRect = new Rect(50, 50, 150, 100);Rect windowRect2 = new Rect(100, 100, 150, 100);//窗口的IDint 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 Buttonif (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,出现这样的效果,是不是很帅气?当然,这还只是一些初步的代码,不过还是分享给大家学习,祝大家早日做好节点编辑器


0 0
原创粉丝点击