参考源链接:https://blog.csdn.net/qq_35361471/article/details/84713382

相关文件夹介绍

Editor

该文件夹可以放在项目的任何文件夹下,可以有多个”Editor”文件夹。
编辑器扩展相关的脚本都要放在该文件夹内,该文件夹中的脚本只会对Unity编辑器起作用。
项目打包的时候,不会被打包到项目中。如果编辑器相关脚本不放在该文件夹中,打包项目可能会出错。
如果非要有些编辑器相关脚本不放在该文件夹中,需要在该类的前后加上UNITY_EDITOR的宏定义

Editor Default Resources

该文件夹需要放在Assets根目录下,用来存储编辑器所需要的图片等资源,书写的时候需要注意中间有空格隔开。此文件夹也不会被打包,访问方法为:EditorGUIUtility.Load()
当然,也可以在Editor文件夹内创建一个Resources文件夹,将相关资源放在该文件夹内,通过Resources.Load()获取资源,也是可以的

Gizmos

该文件夹也需要放在Assets根目录下,可以用来存放Gizmos.DrawIcon()的图片资源

编辑器扩展通用条件:

命名空间:Using UnityEditor ;
一般情况下都需要将代码放入Editor文件夹中

添加快捷键

符号 字符
% Ctr/Command
# Shift
& Alt
LEFT/Right/UP/DOWN 方向键
F1-F2 F功能键
_g 字母g

应用举例:[MenuItem(“MyTools/test1 %_q”)] 快捷键 Ctrl+Q

[MenuItem]

image.png
>作用及描述:创建一个菜单项并调用它后面的静态函数
>重载属性解释:
itemName: 像路径名一样表示的菜单项。 例如菜单“MyTools/Do Something”
isValidateFunction: 如果isValidateFunction为true,这是一个验证函数,将被调用 . 调用具有相同itemName的菜单函数。 (通过则 <黑色> 能被点击,不通过则 <灰色> 不能被点击…)
image.pngimage.png
● priority:优先级:;菜单项显示的顺序。 ( 父级下同级的排序优先级 )
当优先级相差大的时候,就可以出现分割线。image.png
>实际演示:

  1. [MenuItem("MyTool/DeleteAllObj", true)]
  2. private static bool DeleteValidate()
  3. {
  4. if (Selection.objects.Length > 0)
  5. return true;
  6. else
  7. return false;
  8. }
  9. [MenuItem("MyTool/DeleteAllObj",false)]
  10. private static void MyToolDelete()
  11. {
  12. //Selection.objects 返回场景或者Project中选择的多个对象
  13. foreach (Object item in Selection.objects)
  14. {
  15. //记录删除操作,允许撤销
  16. Undo.DestroyObjectImmediate(item);
  17. }
  18. }