Unity 编辑器:是否可以创建易于编辑的快捷方式?

Unity editor: Is it possible to create easily editable shortcuts?

我正在尝试在 Unity 上创建自定义编辑器脚本,出于不同的原因,我希望有很多快捷方式。 有什么方法可以创建在编辑器中触发事件的快捷方式吗?创建一个自定义编辑器只是为了编辑第一个编辑器的快捷方式对我来说是不可能的,因为我没有那么多时间,但它确实可以帮助我轻松更改自己的快捷方式。

到目前为止,这是我的代码:

static void EditorGlobalKeyPress()
    {
        Event current = Event.current;
        if ((!current.alt && !current.control)|| current.type != EventType.KeyUp) return;
        switch (Event.current.keyCode)
        {
            case KeyCode.L:
                // Load stuff
                break;
            case KeyCode.U:
                // Unload stuff
                break;
            default:
                break;
        }
    }

虽然它工作正常,但拥有可编辑的快捷方式会很棒。有谁知道这是否可行?

是的,您可以使用 MenuItem

To create a hotkey you can use the following special characters:

  • % (ctrl on Windows and Linux, cmd on macOS),
  • ^ (ctrl on Windows, Linux, and macOS),
  • # (shift),
  • & (alt).

If no special modifier key combinations are required the key can be given after an underscore. For example to create a menu with hotkey shift-alt-g use "MyMenu/Do Something #&g". To create a menu with hotkey g and no key modifiers pressed use "MyMenu/Do Something _g".

Some special keyboard keys are supported as hotkeys, for example "#LEFT" would map to shift-left. The keys supported like this are: LEFT, RIGHT, UP, DOWN, F1 .. F12, HOME, END, PGUP, PGDN, INS, DEL, TAB, SPACE.

A hotkey text must be preceded with a space character ("MyMenu/Do_g" won't be interpreted as hotkey, while "MyMenu/Do _g" will).

例如

[MenuItem("Test/example %g")]
private static void TEEEEST()
{
    Debu.Log("Example!");
}

这也添加了全局快捷方式

此外,从用户体验的角度来看,这更好,因此用户不仅可以通过快捷方式,还可以通过菜单来执行此操作。当您按下快捷按钮时,您可以查看为什么会发生这种情况(见下文);)


然后任何用户仍然可以通过 Shortcut Manager (Edit -> Shortcuts...)

自由编辑和重新分配它们