UEDL8-5——显示GUI

本章代码关键字

1
2
3
Handles.BeginGUI()
Handles.EndGUI()
SceneView.currentDrawingSceneView.position

Scene中显示GUI

需要使用两个方法,Handles.BeginGUI()​,Handles.EndGUI()
在两个方法之间编写GUI绘制代码即可

1
2
3
4
5
6
7
8
9
private void OnSceneGUI()
{
Handles.BeginGUI();
if (GUILayout.Button("测试按钮"))
{
Debug.Log("Scene中的按钮响应");
}
Handles.EndGUI();
}

显示效果:image

获取Scene窗口大小

获取当前Scene窗口信息:SceneView.currentDrawingSceneView
它继承自EditorWindow​,因此通过position​属性(Rect)就能得到它的大小

这个属性可以用于布局GUI控件绘制的位置,假设要让GUI控件绘制在右下角,实现如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
private void OnSceneGUI()
{
Handles.BeginGUI();
float w = SceneView.currentDrawingSceneView.position.width;
float h = SceneView.currentDrawingSceneView.position.height;
GUILayout.BeginArea(new Rect(w - 100, h - 100, 100, 100));
GUILayout.Label("测试文本控件显示");
if (GUILayout.Button("测试按钮"))
{
Debug.Log("Scene中的按钮响应");
}
GUILayout.EndArea();
Handles.EndGUI();
}

显示效果:​image