Еще бы хорошо объяснить, почему так происходит. А дело все в том, что второй атрибут (у которого второй параметр указан как true) должен быть определен у метода, проверяющего можно ли сделать данное действие или нет. Такой метод должен возвращать bool - если true, значит действие можно сделать и пункт меню будет активным, если false - то действие в текущем контексте не применимо (например у выделенного объекта нет какого-либо компонента или этот объект находится в ассетах, а не в сцене).
Собственно пример из справки:
// Validated menu item.
// Add a menu item named "Log Selected Transform Name" to MyMenu in the menu bar.
// We use a second function to validate the menu item
// so it will only be enabled if we have a transform selected.
[MenuItem("MyMenu/Log Selected Transform Name")]
static void LogSelectedTransformName()
{
Debug.Log("Selected Transform is on " + Selection.activeTransform.gameObject.name + ".");
}
// Validate the menu item defined by the function above.
// The menu item will be disabled if this function returns false.
[MenuItem("MyMenu/Log Selected Transform Name", true)]
static bool ValidateLogSelectedTransformName()
{
// Return false if no transform is selected.
return Selection.activeTransform != null;
}