概要
using System.Linq; using UnityEditor; using UnityEditor.SceneManagement; using UnityEngine.SceneManagement; using UnityEngine.Tilemaps; [InitializeOnLoad] public static class AllTilesRefresher { static AllTilesRefresher() { EditorSceneManager.sceneOpened += OnOpen; } private static void OnOpen( Scene scene, OpenSceneMode mode ) { var list = scene .GetRootGameObjects() .Select( c => c.GetComponentsInChildren<Tilemap>( true ) ) .SelectMany( c => c ) ; foreach ( var tilemap in list ) { Undo.RecordObject( tilemap, "Refresh All Tiles" ); tilemap.RefreshAllTiles(); EditorUtility.SetDirty( tilemap ); } } }
上記のスクリプトを Unity プロジェクトの Editor フォルダに追加すると
エディタでシーンを開いた時に Tilemap のすべてタイルを
自動でリフレッシュできるようになります
パレットに指定しているスプライトを変更した後などに役立ちます