UnityProject 内部 で ディレクトリを作成する方法として
AssetDatabase.CreateFolder
と System.IO.Directory.CreateDirectory(path)
の2つが存在します
2つの違いを以下のとおりです
AssetDatabase.CreateFolder
"Assets/" から始まるディレクトリパスを指定する
途中にディレクトリが存在しない場合はエラーになる
System.IO.Directory.CreateDirectory(path)
ルートからのフルパスを指定する
途中にディレクトリが存在しなくても作成してくれる
AssetDatabase.CreateFolder を利用した再帰的にディレクトリを作成する処理
パスを AssetDatabase.IsValidFolder
で存在するか見ていってなければ作成していく
private static void CreateFolderRecursively(string path) { // Assetsから始まってない場合は処理できない if (!path.StartsWith("Assets/")) return; // AssetDatabase なので 区切り文字は / var dirs = path.Split('/'); var combinePath = dirs[0]; // Assets の部分はスキップ foreach (var dir in dirs.Skip(1)) { // ディレクトリの存在確認 if (!AssetDatabase.IsValidFolder(combinePath + '/' + dir)) AssetDatabase.CreateFolder(combinePath, dir); combinePath += '/' + dir; } }