コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】MenuItem に secondaryPriority を渡して表示順を細かく調整できる

概要

using UnityEditor;

internal static class Example
{
    [MenuItem( "Tools/C", priority = 1 )]
    private static void C() { }

    [MenuItem( "Tools/B", priority = 1 )]
    private static void B() { }

    [MenuItem( "Tools/A", priority = 1 )]
    private static void A() { }
}

今の Unity では MenuItempriority の値が同じなら
MenuItem が名前順で表示されるが、

using UnityEditor;

internal static class Example
{
    [MenuItem( "Tools/C", priority = 1, secondaryPriority = 1 )]
    private static void C() { }

    [MenuItem( "Tools/B", priority = 1, secondaryPriority = 2 )]
    private static void B() { }

    [MenuItem( "Tools/A", priority = 1, secondaryPriority = 3 )]
    private static void A() { }
}

secondaryPriority を指定すると
同じ priority 内における表示順を細かく調整できる。

using UnityEditor;

internal static class Example
{
    [MenuItem( "Tools/C", priority = 1, secondaryPriority = 0.1f )]
    private static void C() { }

    [MenuItem( "Tools/B", priority = 1, secondaryPriority = 0.2f )]
    private static void B() { }

    [MenuItem( "Tools/A", priority = 1, secondaryPriority = 0.3f )]
    private static void A() { }
}

secondaryPriorityfloat 型なので上記のような指定も可能。