При использовании MenuItem в скрипте почему при изменении порядка приоритета пункта меню он никогда не меняется?

#c# #unity3d

#c# #unity3d

Вопрос:

Пункт меню Generate Guid все время находится посередине и никогда не меняет свою позицию. Я хочу, чтобы он был выше перед копией или под камерой внизу.

 using System;
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;

public class GenerateAutomaticGuid : Editor
{
    public static string guid;

    private static Guid uniqueID;

    [MenuItem("GameObject/Generate Guid", false, -1)]
    private static void GenerateGuid()
    {
        
    }
}
  

Пункт меню никогда не меняет место

Ответ №1:

Согласно документации скриптового API, я думаю, что вы используете MenuItemAttribute неправильно.

При добавлении пунктов меню в меню «GameObject /» для создания пользовательских игровых объектов обязательно вызывайте GameObjectUtility .Установите parentandalign, чтобы убедиться, что новый GameObject правильно отображается в случае контекстного щелчка (см. Пример ниже). Ваша функция также должна вызывать Undo.RegisterCreatedObjectUndo, чтобы отменить создание и установить Selection.ActiveObject для вновь созданного объекта. Также обратите внимание, что для того, чтобы пункт меню в «GameObject /» был распространен на выпадающий список «Создание иерархии» и контекстное меню «Иерархия», он должен быть сгруппирован с другими пунктами меню создания GameObject. Этого можно достичь, установив его приоритет равным 10 (см. Пример ниже). Обратите внимание, что для устаревших целей элементы меню в «GameObject / Create Other» без явного набора приоритетов получат приоритет 10 вместо 1000 по умолчанию — мы рекомендуем использовать более описательное название категории, чем «Создать другое», и явно устанавливать приоритет 10.

 [MenuItem("GameObject/MyCategory/Custom Game Object", false, 10)]
  

Источник: https://docs.unity3d.com/ScriptReference/MenuItem.html