コガネブログ

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

【Unity】Tilemap が複製された時に、複製された Tilemap を Tile Palette の Active Tilemap に自動で設定するエディタ拡張

概要

f:id:baba_s:20190928140413g:plain

Tilemap が複製された時は Tile Palette の Active Tilemap は変化しないですが

using System.Reflection;
using UnityEditor;

[InitializeOnLoad]
public static class Example
{
    static Example()
    {
        EditorApplication.hierarchyChanged += OnChanged;
    }

    private static void OnChanged()
    {
        var assembly = typeof( AssetDatabase ).Assembly;
        var type     = assembly.GetType( "UnityEditor.GridPaintingState" );
        var property = type.GetProperty( "scenePaintTarget", BindingFlags.Public | BindingFlags.Static );

        property.SetValue( type, Selection.activeGameObject );
    }
}

上記のようなエディタ拡張を Unity プロジェクトに追加することで

f:id:baba_s:20190928140456g:plain

Tilemap が複製された時に、複製された Tilemap が
Tile Palette の Active Tilemap に自動で設定されるようになります