版本: Unity 6 (6000.0)
语言English
  • C#

MenuItem 构造函数

建议修改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交内容,但我们确实阅读了用户提出的每一个建议更改,并在适用的情况下进行更新。

关闭

提交失败

由于某些原因,您的建议更改无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

声明

public MenuItem(string itemName);

声明

public MenuItem(string itemName, bool isValidateFunction);

声明

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

参数

itemName itemName 表示菜单项,类似于路径名。例如,菜单项可以是 "GameObject/Do Something"
isValidateFunction 如果 isValidateFunction 为 true,则表示这是一个验证函数,在调用具有相同 itemName 的菜单函数之前会被调用。
priority 在菜单中显示菜单项的顺序。如果菜单项的优先级值大于或等于其前一个项目的优先级值加 10,则菜单中这两个菜单项之间会用分隔线隔开。

描述

创建一个菜单项,并在选择该菜单项时调用其后的静态函数。

MenuItem 是一个位于脚本函数之前的属性。这使得该函数出现在 Unity 菜单系统中。菜单位置由 itemName 参数指定。

isValidateFunction 用于将 MenuItem 函数设为在具有相同 itemName 参数的脚本函数之前执行的函数。第二个参数是布尔值。如果此参数设置为 true,则表示关联函数将在第二个脚本函数执行之前被调用。接下来执行具有相同 itemName 的第二个脚本函数。

警告:只有当 isValidateFunction 设置为 false 时,才会在执行函数中考虑 priority。当 isValidateFunction 设置为 true 以标记验证函数时,不会使用 priority

priority 决定了后续脚本函数在菜单系统中的排序方式。该整数值会与其他脚本函数上的值进行比较。父菜单从其第一个定义的子菜单继承其优先级值。如果整数值大于其他值,则 MenuItem 脚本函数将放置在列表底部。 priority 的值也可用于将脚本函数列表管理成组。本页后面的示例将对此功能进行更详细的说明。

对于 iconResource 参数,可以使用包含文件和扩展名的完整项目路径,或者如果图标位于 Editor 资源中,则只需使用图标名称。

以下示例代码将三个菜单项及其对应的函数添加到名为“Example”的菜单中:Example2(优先级 100)、Example1(优先级 101),然后是 Example3(优先级 112)。在菜单中,分隔线将 Example3 与其他两个菜单项隔开,因为 Example3 的优先级值比 Example1 大 10 或更多。

// Add menu item Example1 into a new menu called Example.
[MenuItem("Example/Example1", false, 101)]
public static void Example1()
{
    Debug.Log("Example/Example1");
}

// Add Example2 to the Example menu. Example2 has a priority lower than Example1, so it is added before Example1 in the menu.
[MenuItem("Example/Example2", false, 100)]
public static void Example2()
{
    Debug.Log("Example/Example2");
}

// Example3 has a priority of 112, which is 11 more than Example1.
// This creates a divider between the two in the menu.
[MenuItem("Example/Example3", false, 112)]
public static void Example3()
{
    Debug.Log("Example/Example3");
}

以下示例包含验证函数。不要在验证函数的属性上使用 priority 参数。

// The Example/SelectionCount menu item is enabled only when you select at least one object.
[MenuItem("Example/SelectionCount", true)]
public static bool SelectionCountValidation()
{
    return Selection.count > 0;
}

// The actual function that is called if the active menu item is selected.
[MenuItem("Example/SelectionCount", false, 200)]
public static void SelectionCountAction()
{
    Debug.Log($"The selection contains {Selection.count} element(s)");
}