如何使四边形可以在Unity Editor窗口中拖放?

时间:2017-02-22 08:40:12

标签: unity3d

如何在Unity中创建交互式GUI对象 - 编辑器窗口

enter image description here

我可以像下面的代码一样绘制静态四边形。但是我希望reference video之类的效果从0:22开始到0:30

public class EditorCanvas {
    public static void DrawQuad(int x, int y, int width, int height, Color color) {
        Rect rect = new Rect(x, y, width, height);
        Texture2D texture = new Texture2D(1, 1);
        texture.SetPixel(0, 0, color);
        texture.Apply();
        GUI.skin.box.normal.background = texture;
        GUI.Box(rect, GUIContent.none);
    }
}


public class MyWindow : EditorWindow {
    void OnGUI() {
        EditorCanvas.DrawQuad(100, 75, 50, 50, Color.black);
    }
}

1 个答案:

答案 0 :(得分:1)

您可以声明一个包含当前盒子位置的矩形。在此示例中,位置初始化为100,100,大小为Rect _boxPos = new Rect(0, 0, 100, 100); void OnGUI() { if (Event.current.type == EventType.MouseDrag && _boxPos.Contains(Event.current.mousePosition)) { _boxPos.position += Event.current.delta; } GUI.Box(_boxPos, "test"); if (Event.current.isMouse) Event.current.Use(); }

然后,每次单击(EventType.MouseDrag)时移动鼠标,都会将自上次事件(Event.delta)以来的鼠标移动添加到框位置。

为了获得顺畅的拖拽和你必须告诉团结,你有一个事件,所以他可以重新绘制。 (Event.use

 NSIndexPath *scrollIndexPath = [NSIndexPath indexPathForRow:([self.tableView numberOfRowsInSection:0] - 1) inSection:0];
 [[self tableView] scrollToRowAtIndexPath:scrollIndexPath atScrollPosition:UITableViewScrollPositionBottom animated:NO];

现在您可以轻松调整DrawQuad方法。