コガネブログ

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

【Unity】Tilemap の Tile Palette に登録されているすべてのブラシを取得する方法

ソースコード

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

public static class GridPaletteBrushesUtils
{
    private const BindingFlags BINDING_ATTR = BindingFlags.Static | BindingFlags.Public;

    private static readonly Assembly     m_assembly = typeof( AssetDatabase ).Assembly;
    private static readonly Type         m_type     = m_assembly.GetType( "UnityEditor.GridPaletteBrushes" );
    private static readonly PropertyInfo m_property = m_type.GetProperty( "brushes", BINDING_ATTR );

    public static List<GridBrushBase> brushes => m_property.GetValue( null ) as List<GridBrushBase>;
}

使い方

using UnityEditor;
using UnityEngine;

public class Example
{
    [MenuItem( "Tools/Hoge" )]
    private static void Hoge()
    {
        foreach ( var brush in GridPaletteBrushesUtils.brushes )
        {
            Debug.Log( brush.name );
        }
    }
}

Tile Palette に登録されているすべてのブラシを取得できます

f:id:baba_s:20190928142000p:plain