-小狗饼干- / 洛12
689 字
3 分钟
Unity 编辑器扩展(2):菜单栏扩展
顶部菜单栏扩展
Unity 默认的顶部菜单栏如下图,我们可以在这里添加自定义工具。

使用 MenuItem 特性标记一个静态方法就可以在顶部栏添加自定义工具:
using UnityEditor;using UnityEngine;
public class TopbarExtension{ [MenuItem("Tool/Custom_1")] public static void Custom_1() { Debug.Log("TopbarExtension : Custom_1"); }}等待编译完成后就可以在顶部栏看到自定义工具,点击后就会执行 Custom_1 方法:

MenuItem 特性参数
MenuItem 特性可以传入三个参数:
[MenuItem(string itemName, bool isValidateFunction, int priority)]| 参数 | 类型 | 描述 |
|---|---|---|
itemName | string | 工具在菜单中的路径 |
isValidateFunction | bool | 是否用作相同 itemName 方法的验证方法 |
priority | int | 工具在菜单中的优先级,默认值:1000 |
itemName 参数
该参数接受一个 string 类型参数,用来表示工具在顶部栏中的路径,通过 ”/” 字符分割父子级。
isValidateFunction 参数
该参数接受一个 bool 类型参数,传入 true 时表示该方法为验证方法:
- 验证方法会在具有相同
itemName方法之前执行 - 验证方法必须返回 bool 才可以生效
- 返回 false 时,
itemName对应的菜单栏选项变为不可选状态
示例代码:
using UnityEditor;using UnityEngine;
public class TopbarExtension{ [MenuItem("Tool/Custom_1", false)] public static void Custom_1() { Debug.Log("TopbarExtension : Custom_1"); }
[MenuItem("Tool/Custom_1", true)] public static bool Custom_2() { return false; }}通过验证方法可以对工具执行的条件进行判断,防止在非预期的情况下运行。
priority 参数
该参数接受一个 int 类型参数,用来决定选项在菜单栏中的排列位置:
- 菜单列表中处于同一级的不同方法之间会比较
priority的值 - 值较大的选项会排在值较小的选项下面
- 当两个选项的
priority值相差超过 10(>=11)时,会在两个选项之间显示一条分割线
快捷键设置
可以在 itemName 中设置方法的快捷键:
using UnityEditor;using UnityEngine;
public class TopbarExtension{ [MenuItem("Tool/Custom_1 %#d", false)] public static void Custom_1() { Debug.Log("TopbarExtension : Custom_1"); }
[MenuItem("Tool/Custom_1 %#d", true)] public static bool Custom_2() { return false; }}通过空格字符区分路径文本和快捷键文本,为选项添加快捷键。例如 %#d 将被解释为 ctrl+shift+D。如果不需要特殊按键则需要以下划线开始,例如 “Tool/Custom_1 _d”。
Unity 支持的快捷键组合:
| 快捷键文本 | 对应的按键 |
|---|---|
| % | Windows: ctrl macOS: cmd |
| # | shift |
| & | alt |
| LEFT | ← |
| RIGHT | → |
| UP | ↑ |
| DOWN | ↓ |
| F1..F12 | F1..F12 |
| HOME | home |
| END | end |
| PGUP | page up |
| PGDN | page down |
右键菜单扩展
Hierarchy 窗口右键菜单
Hierarchy 窗口的右键菜单对应着顶部菜单栏的 GameObject,使用 [MenuItem("GameObject/Custom_3")] 即可将方法显示在 Hierarchy 窗口的右键菜单中。
Project 窗口右键菜单
Project 窗口的右键菜单对应着顶部菜单栏的 Assets,使用 [MenuItem("Assets/Custom_4")] 即可将方法显示在 Project 窗口的右键菜单中。
Unity 编辑器扩展(2):菜单栏扩展
https://blog.unknowncat2048.top/posts/unity-editor-extension-2/