Показать сообщение отдельно
Старый 28.11.2020, 15:29   #2
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: О том как сделать неактивное кастомное меню

Еще бы хорошо объяснить, почему так происходит. А дело все в том, что второй атрибут (у которого второй параметр указан как 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;
    } 
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Evgen (29.11.2020)