码迷,mamicode.com
首页 > Windows程序 > 详细

EditorWindow 编辑器窗口

时间:2015-08-10 23:35:51      阅读:289      评论:0      收藏:0      [点我收藏+]

标签:

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中的默认行为是重复使用窗口,所以当窗口处于显示状态时,再次选择菜单项的操作将显示当前窗口。

EditorWindow 编辑器窗口

标签:

原文地址:http://www.cnblogs.com/MrX1892/p/4719289.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!