zl程序教程

您现在的位置是:首页 >  工具

当前栏目

一、Unity编辑器开发之MenuItem

2023-09-27 14:19:52 时间

MenuItem自定义菜单栏属性,允许我们创建自己的编辑器菜单。

public MenuItem (string itemName);
public MenuItem (string itemName, bool isValidateFunction);
public MenuItem (string itemName, bool isValidateFunction, int priority);

param1: itemName 表示菜单项的路径。

param2: isValidateFunction 默认为false,为 true时表明这是一个验证函数,它将在调用具有相同的itemName的菜单函数之前被调用。

param3: priortiy 表示菜单项的显示顺序,默认为1000,数值越小的越靠上显示,若相邻菜单间差距大于11则会被分割线进行分割。

具体如下所示:

1. public MenuItem (string itemName);

    [MenuItem("SK.Editor/Function1")]
    static void Function1()
    {
        Debug.Log("Function1 Invoke.");
    }

点击该菜单项后,控制台会输出字符串"Function Invoke."

2. public MenuItem (string ItemName, bool isValidateFunction);

当参数isValidateFunction为true时表明这是一个验证函数,当返回值为true时,该菜单项才可以进行选择,否则不可选择。

    [MenuItem("SK.Editor/Function1", false)]
    static void Function1()
    {
        Debug.Log("Function1 Invoke.");
    }
    [MenuItem("SK.Editor/Function1", true)]
    static bool Function1Validate()
    {
        return false;
    }

3.public MenuItem (string ItemName, bool isValidateFunction, int priority);

    [MenuItem("SK.Editor/Function1", false, 20)]
    static void Function1() {}    
    [MenuItem("SK.Editor/Function2", false, 10)]
    static void Function2() {}
    [MenuItem("SK.Editor/Function3", false, 31)]
    static void Function3() {}

为菜单项添加快捷键:

StringKeys
​%Ctrl on Windows / Command On OSX
#Shift
&Alt
LEFT/RIGHT/UP/DOWNArrow keys
F1...F2F Keys
HOME,END,PGUP,PGDNHome,End,Page Up,Page Down

如下例,表示使用快捷键Shift+E,即可调用该菜单项:

    [MenuItem("SK.Editor/Function #E")]
    static void Function()
    {
        Debug.Log("Function1 Invoke.");
    }

除上述表格内容外,还可以使用下划线_加字母声明快捷键,例如_E表示使用单一的字母E调用菜单项。