您的位置 首页 > 腾讯云社区

Unity开发-编辑器:属于自己的编辑菜单---雷潮

正所谓:人靠衣装,佛靠金装。程序也如此,好的程序给人高潮。 例如下面的例子:

1.png

里面的菜单是系统自带的,但是如何能在里面留下我们的痕迹呢?

1、Editor(编辑器)using UnityEngine; using System.Collections; using UnityEditor; // 引用命名控件 public class EditorTest : Editor { // 继承Editor这个类 [MenuItem("SYTest/测试窗口", false)] static void STest() { Debug.Log("测试窗口"); } // 快捷键是F1...F2 = F... [MenuItem("SYTest1/测试窗口1 F2", false)] static void Test1() { Debug.Log("测试窗口1"); } // 添加快捷键: % = Ctrl, # = Shift, & = Alt // 如果是a-z,则前面写_a - _z这种带_前缀的 [MenuItem("SYTest2/测试窗口2 %_K", false)] static void Test2() { Debug.Log("测试窗口2"); } }

效果图:

2.png

1、多级菜单:

3.png

内部实现:

[MenuItem("SYTest2/测试窗口1/我是谁 %_O",false,1)] static void Test3() { Debug.Log("我是谁"); } [MenuItem("SYTest2/测试窗口1/我是1号 %_O",false,2)] static void Test4() { Debug.Log("我是1号"); } //后面的数字,代表优先级,数字越小,显示越靠前 [MenuItem("SYTest2/测试窗口1/我是2号 %_O",false,3)] static void Test5() { Debug.Log("我是2号"); }

2、不可选菜单

4.png

[MenuItem("SYTest2/测试窗口1/我是2号 %_O", true)] static bool TestSy() { object obj = Selection.activeObject; // 首先不等与空,并且obj的类型是GameObject类型 return obj != null && obj.GetType() == typeof(GameObject); } [MenuItem("SYTest2/测试窗口1/我是2号 %_O")] static void Test6() { Debug.Log("我是2号"); }2.Inspector面板

我们添加系统组件的时候,发现面板很好看,而脚本做不到这种效果。 利用GUILayout 绘制UI控件

1.png

3.窗口的菜单

2.png

填充更多内容

3.png

4.png

4.如何为Assets添加额外扩展

5.png

总结:

顶部编辑器菜单:引用using UnityEditor; 使用[MenuItem()]; Inspector面板的处理:继承Editor,重写虚方法:OnInspectorGUI(),并调用(父类的此方法)base.OnInspectorGUI() 窗口的面板:继承:EditorWindow, 使用EditorWindow.GetWindow(); 调用窗口的Show()方法。

---来自腾讯云社区的---雷潮

关于作者: 瞎采新闻

这里可以显示个人介绍!这里可以显示个人介绍!

热门文章

留言与评论(共有 0 条评论)
   
验证码: