public static void Serialize() { try { // Allow Multiple Objects to be Selected. Object[] objects = Selection.objects; string settingsFile = ""; ProjectDirectories projectDirectories = new ProjectDirectories(); foreach (Object _object in objects) { if (string.IsNullOrEmpty(settingsFile)) { settingsFile = EditorUtility.SaveFilePanel("Save Project Directory Structure", Application.dataPath, $"project-directory-structure", "pdjson"); } string objectPath = AssetDatabase.GetAssetPath(_object); if (Directory.Exists(objectPath)) { // Get All Folders and Subfolders. string[] paths = Directory.GetDirectories(objectPath, "*", SearchOption.AllDirectories); projectDirectories.Directories.AddRange(paths); } else { Debug.LogWarning("You have not selected a Folder!"); } } if (projectDirectories.Directories.Count > 0) { string json = JsonUtility.ToJson(projectDirectories, true); File.WriteAllText(settingsFile, json); AssetDatabase.Refresh(); } else { Debug.Log("There are no Valid Directories to Serialize."); } } catch (Exception exception) { Debug.LogError(exception.ToString()); } }
/// <summary> /// Create Directories from a file at a path. /// </summary> /// <param name="path"></param> private static void CreateDirectories(string path) { string json = File.ReadAllText(path); ProjectDirectories projectDirectories = JsonUtility.FromJson <ProjectDirectories>(json); projectDirectories.Directories.ForEach(directory => { if (!Directory.Exists(directory)) { Directory.CreateDirectory(directory); Debug.Log($"Created Directory: {directory}"); } }); AssetDatabase.Refresh(); }