コンポーネントを移動させる

Unity Editor上でGameObjectを選択した場合、

アタッチされているコンポーネントがInspector上に表示されます。

コンポーネントの順番を変更したい場合はいくつかの方法で並び替えることができます。

コンテキストメニューから並び替える

コンポーネントのヘッダー部分を右クリックするか、

ヘッダーの右端のアイコンをクリックすることでコンテキストメニューが表示されます。

コンテキストメニューから「Move Up」「Move Down」を選択することで

コンポーネントを一つ分ずつ上下に移動できます。

ドラッグ&ドロップで並び替える

コンポーネントのヘッダー部分を選択して上下にドラッグし、

青いラインが表示されたところでドロップすることでコンポーネントの順番を変更することができます。

スクリプトから並び替える

エディタ拡張用のスクリプトを用意し、

ComponentUtility.MoveComponentUpComponentUtility.MoveComponentDownメソッドを呼び出すことで、

コンテキストメニューで上下に移動させるのと同じ効果があります。

以下のようなスクリプトをEditorフォルダ以下に用意することで、

コンテキストメニューからコンポーネントを一番上か一番下へ移動できるようになります。

using UnityEditor;
using UnityEditorInternal;
using UnityEngine;

public static class ObjectContextMenu
{
    private const string MoveToTopPath = "CONTEXT/Object/Move To Top";
    private const string MoveToBottomPath = "CONTEXT/Object/Move To Bottom";

    [MenuItem(MoveToTopPath)]
    private static void MoveToTop(MenuCommand command)
    {
        var component = command.context as Component;
        if (component != null)
        {
            while (ComponentUtility.MoveComponentUp(component))
            {
            }
        }
    }
    
    [MenuItem(MoveToBottomPath)]
    private static void MoveToBottom(MenuCommand command)
    {
        var component = command.context as Component;
        if (component != null)
        {
            while (ComponentUtility.MoveComponentDown(component))
            {
            }
        }
    }
}

Transform/RectTransformコンポーネントは一番上に固定されているので、

Move To Top」を実行した場合はTransformの次へ移動します。

まとめ

今回はコンポーネントを並び替える方法について簡単に解説しました。

直感的にドラッグ&ドロップで並び替えられますし、

コンテキストメニューから移動することもできます。

自分でスクリプトを書いてコンポーネントを移動させるメニューを追加することもできます。

📣おしらせ!

Unity Asset Storeで GROW YOUR GARDEN セール が開催中です。

農業関係のアセットなどが最大50%OFFでセール中です。

🔗関連ページ