unity自定义编辑器

必须继承 EditorWindow 类,添加初始化窗口函数作为入口

1
2
3
4
5
6
public static BuildTargetEditor window;
static void MyWindows ()
{
window = (BuildTargetEditor)EditorWindow.GetWindowWithRect (typeof(BuildTargetEditor), new Rect (0, 0, 880, 510), true);
window.title = "编辑器";
}

在菜单栏添加菜单
在菜单栏添加Tools/MyTool 路径菜单,快捷键为Alt+1

1
[MenuItem ("Tools/MyTool &1")]

绘制界面方法

1
2
3
4
5
6
7
 
void ()
{
GUILayout.Space (12f);
GUILayout.BeginHorizontal ();
GUILayout.EndHorizontal ();
}

2.分割线

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
//绘制分割线
public static void VSeparator ()
{

GUILayout.Space (12f);

if (Event.current.type == EventType.Repaint) {
Texture2D tex = EditorGUIUtility.whiteTexture;
Rect rect = GUILayoutUtility.GetLastRect ();
GUI.color = new Color (0f, 0f, 0f, 0.25f);
GUI.DrawTexture (new Rect (0f, rect.yMin + 6f, Screen.width, 4f), tex);
GUI.DrawTexture (new Rect (0f, rect.yMin + 6f, Screen.width, 1f), tex);
GUI.DrawTexture (new Rect (0f, rect.yMin + 9f, Screen.width, 1f), tex);
GUI.color = Color.white;
}
}

public static void HSeparator ()
{
GUILayout.Space (12f);
if (Event.current.type == EventType.Repaint) {
Texture2D tex = EditorGUIUtility.whiteTexture;
Rect rect = GUILayoutUtility.GetLastRect ();
GUI.color = new Color (0f, 0f, 0f, 0.25f);
GUI.DrawTexture (new Rect (rect.xMin + 6f, 0f, 1f, Screen.height), tex);
GUI.DrawTexture (new Rect (rect.xMin + 6f, 0f, 4f, Screen.height), tex);
GUI.DrawTexture (new Rect (rect.xMin + 9f, 0f, 1f, Screen.height), tex);
GUI.color = Color.white;
}
}

3.基本UI

1
2
3
4
5
6
7
8
9
10
11
12
13
14
GUILayout.Label (“标签”, GUILayout.Width (240));

GUI.Button (new Rect (4f, Screen.height – 48, 120, 42), “按钮”)

GUILayout.Toggle (isOn,nameStringArry[], “选项”,GUILayout.Width(232)

GUILayout.Toolbar (intSelected,stringitem[]);

GUILayout.Box (Resources.LoadAssetAtPath<Texture> (iCO_List [index]) as Texture, GUILayout.Width (100), GUILayout.Height (100));

GUILayout.Space (100);

GUILayout.BeginHorizontal ();
GUILayout.EndHorizontal ();

效果图如下
图片