コガネブログ

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

【Unity】Inspector の Add Component ボタンの下にボタンを追加してみる

概要

using System.Linq;
using UnityEditor;
using UnityEngine;
using UnityEngine.UIElements;

public static class Example
{
    [MenuItem( "Tools/Hoge" )]
    public static void Hoge()
    {
        var assembly        = typeof( Editor ).Assembly;
        var windowTypeName  = "UnityEditor.InspectorWindow";
        var windowType      = assembly.GetType( windowTypeName );
        var inspectorWindow = Resources.FindObjectsOfTypeAll( windowType ).FirstOrDefault() as EditorWindow;

        if ( inspectorWindow == null ) return;
        inspectorWindow.rootVisualElement.Query().ForEach
        (
            visualElement =>
            {
                if ( !visualElement.GetClasses().Contains( "unity-inspector-add-component-button" ) ) return;

                var button = new Button( () => Debug.Log( "ピカチュウ" ) )
                {
                    text = "ピカチュウ",
                };

                visualElement.Add( button );
            }
        );
    }
}