【Unity】空のフォルダを一括で削除してくれるエディタ拡張を作った
ことはじめ
gitではフォルダは基本的に管理されず、中にファイルが有った場合にはフォルダを作る、という仕組みになっています。
対して、Unityではフォルダごとにmetaファイルが生成されるようになっています。
そのため、Unityのプロジェクトをgitで管理しているとき、他の人が削除したフォルダがローカルで反映されず、再度metaファイルが生成されてしまうなどの事故が起こりがちです。
その都度ローカルでも不要なフォルダを削除してやれば問題ないのですが、地味に面倒な作業だったため、自動で消してくれるエディタ拡張を作りました。
動作
不要なファイル群
ToolメニューからRemove empty folders
を選択
ログ
すっきり
コード
using System.Collections.Generic; using System.IO; using UnityEditor; using UnityEngine; public class EmptyFolderRemover : Editor { [MenuItem("Tools/Remove empty folders")] public static void Run() { var emptyDirectories = new List<string>(); while (true) { emptyDirectories.Clear(); ListUpEmptyDirectories("Assets", emptyDirectories); if (emptyDirectories.Count == 0) break; foreach (var path in emptyDirectories) { Directory.Delete(path); Debug.Log("Deleted: " + path); } AssetDatabase.Refresh(); } } public static void ListUpEmptyDirectories(string path, List<string> emptyDirectories) { var directories = Directory.GetDirectories(path); var files = Directory.GetFiles(path); if (directories.Length + files.Length == 0) { emptyDirectories.Add(path); return; } foreach (var directory in directories) { ListUpEmptyDirectories(directory, emptyDirectories); } } }