如何在Unity中创建交互式GUI对象 - 编辑器窗口?
我可以像下面的代码一样绘制静态四边形。但是我希望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);
}
}
答案 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方法。