文章目录
1 特殊文件夹 Editor
Editor 文件夹是 Unity 中的特殊文件夹,Unity 中所有编辑器相关的脚本都需要放置在其中,其相关的命名空间为 UnityEditor。
使用命名空间 UnityEditor 的脚本最终不能被 Unity 打包,需要将这些脚本放置到 Editor 文件夹中,避免打包时报错。
![image-20240208224523481](https://i-blog.csdnimg.cn/blog_migrate/7ec517a35b00a3146ddb3173107467e9.png#pic_center)
2 在 Unity 菜单栏中添加自定义页签
- 命名空间:UnityEditor
- 特性:MenuItem
- 用法:在静态函数前加上
[MenuItem("页签/一级选项/二级选项/....")]
- 作用:当在菜单栏点击该页签时,将执行静态函数中逻辑。
- 注意:
- 不用在意继承对象。
- 斜杠必须是
/
。
public class Lesson1
{
[MenuItem("Unity编辑器拓展/Lesson1/TestFun")]
private static void TestFun()
{
Debug.Log("TestFun");
}
}
![image-20240208224442700](https://i-blog.csdnimg.cn/blog_migrate/02b4993bcf1c6324ad69a6476ab8dbf1.png#pic_center)
3 在 Hierarchy 窗口中添加自定义页签
-
命名空间:UnityEditor
-
特性:MenuItem
-
用法:在静态函数前加上,并且页签命名放入 GameObject 路径。
[MenuItem("GameObject/页签/一级选项/二级选项/....")]
-
注意:
- 不用在意继承对象。
- 斜杠必须是
/
。 - 在菜单栏的 GameObject 中也会出现对应选项。
[MenuItem("GameObject/Lesson1/TestFun2")]
private static void TestFun2()
{
Debug.Log("TestFun2");
}
![image-20240208225017977](https://i-blog.csdnimg.cn/blog_migrate/13af4c6c0571dc3f6bd524ff4f2e6c0b.png#pic_center)
4 在 Project 窗口中添加自定义页签
-
命名空间:UnityEditor
-
特性:MenuItem
-
用法:在静态函数前加上,并且页签命名放入 Assets 路径。
[MenuItem("Assets/页签/一级选项/二级选项/....")]
-
注意:
- 不用在意继承对象。
- 斜杠必须是
/
。 - 在菜单栏的 GameObject 中也会出现对应选项。
![image-20240208225001384](https://i-blog.csdnimg.cn/blog_migrate/3839abf434bade4661db1f40360273f9.png#pic_center)
5 在菜单栏的 Component 菜单添加脚本
-
命名空间:UnityEngine
-
特性:AddComponentMenu
-
用法:在想要通过 Component 菜单添加的脚本前加上。
[AddComponentMenu("一级选项/二级选项/....")]
-
注意:
- 脚本需要继承 MonoBehaviour 对象,且不能放在 Editor 文件夹下。
- 斜杠必须是
/
。 - 最后一级选项的名字可以和脚本名不一样,但是建议一致。
- 添加该特性的代码可以被 Unity 打包,与因为该特性所在的命名空间不为 UnityEditor。
![image-20240208225910444](https://i-blog.csdnimg.cn/blog_migrate/b930ec427eb4c0e2793d15421b8bb851.png#pic_center)
using UnityEngine;
[AddComponentMenu("Unity编辑器拓展/添加脚本/Lesson1_Test")]
public class Lesson1_Test : MonoBehaviour
{ }
![image-20240208225803399](https://i-blog.csdnimg.cn/blog_migrate/e4d07b7b135c2af7a79153c55fd6c743.png#pic_center)
6 在 Inspector 为脚本右键添加菜单
-
命名空间:UnityEditor
-
特性:MenuItem
-
用法:在静态函数前加上
[MenuItem("CONTEXT/脚本名/页签/一级选项/二级选项/....")]
-
注意:
- 不用在意继承对象。
- 斜杠必须是
/
。
[MenuItem("CONTEXT/Lesson1_Test/Lesson1/自定义功能")]
private static void TestFun4()
{
Debug.Log("TestFun4");
}
![image-20240208230146286](https://i-blog.csdnimg.cn/blog_migrate/a1eb4e2ad81944c06408d977ba067e3f.png#pic_center)
7 加入快捷键
-
单键:路径后 + 空格 + 下划线 + 想要的按键
-
组合键:下划线替换为
%
表示 Ctrl#
表示 Shift&
表示 Alt
-
其他支持的按键:
LEFT
、RIGHT
:#LEFT 表示左 Shift 按键。UP
、DOWN
、F1..F12
、HOME
、END
、PGUP
、PGDN
。
public class Lesson1
{
[MenuItem("Unity编辑器拓展/Lesson1/TestFun #F1")]
private static void TestFun()
{
Debug.Log("TestFun");
}
}
![image-20240208230550896](https://i-blog.csdnimg.cn/blog_migrate/ae4c35b793c1ef3738b789b7ec6baa78.png#pic_center)
8 小结
- 使用 UnityEditor 命名空间的脚本必须放在 Editor 文件夹下,避免打包报错。
- 添加自定义页签,需要用到特性 MenuItem。
- 添加代码添加页签,需要用到特性 AddComponentMenu。