EditorWindow 编辑器窗口

EditorWindow是Unity中可以继承、用来扩展编辑窗口的类,通过继承EditorWindow类,可以制作一个自定义的编辑窗口。这通常包括以下几个步骤:

1.定义一个继承至EditorWindow的脚本;

2.通过MenuItem特性定义触发窗口的显示;

3.在OnGUI中定义窗口显示的内容。

 1 using UnityEngine;
 2 using System.Collections;
 3 using UnityEditor;
 4 
 5 public class UIGroupEdit : EditorWindow
 6 {
 7     public static UIGroupEdit instance;
 8 
 9     void OnEnable() { instance = this; }
10     void OnDisable() { instance = null; }
11 
12     int indexOfSide, indexOfClass, indexOfUnit;
13 
14     string[] sides = { "BLUE", "RED", "NEUTRALITY" };
15     string[] classes = { "Infantry" };
16     string[] units = { "sniper" };
17 
18     Vector3 pos;
19     float dir;
20 
21     void OnGUI()
22     {
23         EditorGUILayout.Space();
24         GUILayout.BeginVertical();
25         indexOfSide = EditorGUILayout.Popup("Side", indexOfSide, sides);
26         EditorGUILayout.Space();
27         indexOfClass = EditorGUILayout.Popup("Class", indexOfClass, classes);
28         EditorGUILayout.Space();
29         indexOfUnit = EditorGUILayout.Popup("Unit", indexOfUnit, units);
30         EditorGUILayout.Space();
31         pos = EditorGUILayout.Vector3Field("Position", pos);
32         EditorGUILayout.Space();
33         dir = EditorGUILayout.FloatField("Orientation", dir);
34         EditorGUILayout.Space();
35         GUILayout.BeginHorizontal();
36         if (GUILayout.Button("Ok"))
37         {
38             Debug.Log("something...");
39         }
40         if (GUILayout.Button("Cancel"))
41         {
42             instance.Close();
43         }
44         GUILayout.EndHorizontal();
45         GUILayout.EndVertical();
46     }
47 }
 1 using UnityEngine;
 2 using System.Collections;
 3 using UnityEditor;
 4 
 5 public static class XGUIMenu
 6 {
 7     [MenuItem("MrXWindow/Edit Group &#2")]
 8     public static void OpenGroupEdit()
 9     {
10         EditorWindow.GetWindow<UIGroupEdit>(false, "Edit Group", true).Show();
11     }
12 }

以上定义了一个自定义编辑窗口,在窗口中定义了几个选择列表、一个Vector3、一个float编辑框、2个button按钮,效果如下:

这样我们就创建一个标准的、可停靠的编辑器窗口,我们可以通过点击菜单项“MrXWindow”→“Edit Group”或者通过快捷键Alt+Shift+2来让窗口显示。Unity中的默认行为是重复使用窗口,所以当窗口处于显示状态时,再次选择菜单项的操作将显示当前窗口。

posted @ 2015-08-10 21:25  MrX1892  阅读(1493)  评论(0编辑  收藏  举报