首页 > 解决方案 > 在脚本中使用 MenuItem 时,为什么在更改菜单项的优先级顺序时它永远不会改变?

问题描述

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()
    {
        
    }
}

菜单项永远不会改变位置

标签: c#unity3d

解决方案


根据 Scriptable API 文档,我认为您使用MenuItemAttribute错误的方式。

将菜单项添加到“GameObject/”菜单以创建自定义游戏对象时,请务必调用 GameObjectUtility.SetParentAndAlign 以确保在上下文单击的情况下正确地重新设置新的 GameObject(参见下面的示例)。您的函数还应调用 Undo.RegisterCreatedObjectUndo 以使创建可撤消并将 Selection.activeObject 设置为新创建的对象。另请注意,为了将“GameObject/”中的菜单项传播到层次结构创建下拉菜单和层次结构上下文菜单,它必须与其他游戏对象创建菜单项组合在一起。这可以通过将其优先级设置为 10 来实现(参见下面的示例)。请注意,出于遗留目的,“GameObject/Create Other”中的 MenuItems

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

来源:https ://docs.unity3d.com/ScriptReference/MenuItem.html


推荐阅读