Legacy Documentation: Version 5.5
LanguageEnglish
  • C#
  • JS

Script language

Select your preferred scripting language. All code snippets will be displayed in this language.

MenuItem Constructor

Suggest a change

Success!

Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.

Close

Submission failed

For some reason your suggested change could not be submitted. Please <a>try again</a> in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.

Close

Cancel

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

Parameters

itemName The itemName is the menu item represented like a pathname. For example the menu item could be "GameObject/Do Something".
isValidateFunction If isValidateFunction is true, this is a validation function and will be called before invoking the menu function with the same itemName.
priority The order by which the menu items are displayed.

Description

Creates a menu item and invokes the static function following it, when the menu item is selected.

MenuItem is an attribute that precedes a script function. This makes the function appear in the Unity menu system. The menu location is specified by the itemName argument.

isValidateFunction is used to make a MenuItem function as one that will be executed before a script function with the same itemName argument. The second argument is boolean. If this argument is set to true it will mark the associated function as one that is called before the execution of the second script function. This second script function with the same itemName will be executed next.

priority determines how the following script function is ordered in the menu system. The integer value is compared against values on other script functions. If the integer value is greater than other values then the MenuItem script function will be placed at the bottom of the list. The value of priority can also be used to manage the list of script functions into groups. The example later in this page describes more about this feature.

The following script example adds two functions into a Example menu system.

#pragma strict
// Add Example1 into a new menu list
@MenuItem("Example/Example1", false, 100)
public static function Example1() {
	print("Example/Example1");
}
// Add Example2 into the same menu list
@MenuItem("Example/Example2", false, 100)
public static function Example2() {
	print("Example/Example2");
}
using UnityEngine;
using UnityEditor;
using System.Collections;

public class ExampleClass : MonoBehaviour { // Add Example1 into a new menu list [MenuItem("Example/Example1", false, 100)] public static void Example1() { print("Example/Example1"); } // Add Example2 into the same menu list [MenuItem("Example/Example2", false, 100)] public static void Example2() { print("Example/Example2"); } }

This simple following example shows how the Example menu can have two entries divided by a separator line. This happens when the priority argument is separated by more than 10. (However, see the following description.)

#pragma strict
// Add Example1 has priority of 100
@MenuItem("Example/Example1", false, 100)
public static function Example1() {
	print("Example/Example1");
}
// This will cause a divider to be created.
@MenuItem("Example/Example2", false, 111)
public static function Example2() {
	print("Example/Example2");
}
using UnityEngine;
using UnityEditor;
using System.Collections;

public class ExampleClass : MonoBehaviour { // Add Example1 has priority of 100 [MenuItem("Example/Example1", false, 100)] public static void Example1() { print("Example/Example1"); } // Example2 has a priority of 111 which is 11 more than Example1. // This will cause a divider to be created. [MenuItem("Example/Example2", false, 111)] public static void Example2() { print("Example/Example2"); } }

Note: The understanding of ten or greater is considered to create a divider in the menu. However, as per the example above, the difference between script function need to have the priority separated by 11 or more. This is why the example before has a value of 100 and one of 111. Changing 111 to 110 does not have a divider.