internal static void ImportSetting() { string path = EditorUtility.OpenFilePanel("Import New Setting", Application.dataPath, "json"); if (path.Length != 0) { string json = ""; try { json = File.ReadAllText(path); //wrapper the json into `FolderTemplate` to make sure it's valid data file folderTemplate = JsonUtility.FromJson <FolderTemplate>(json); if (folderTemplate == null) //Invalid Data file { throw new InvalidDataException(); } } catch (System.Exception) //In case Data.json corrupted { EditorUtility.DisplayDialog("Import New Setting", "You must select a valid JSON data file!", "OK"); return; } File.WriteAllText(Path.Combine(Application.dataPath, pathToResource), json); //store json to file } }
internal static void StoreSetting(FolderTemplate template) { string json = JsonUtility.ToJson(template); //save as JSON File.WriteAllText(Path.Combine(Application.dataPath, pathToResource), json); //store json to file //#if UNITY_EDITOR UnityEditor.AssetDatabase.Refresh(); //#endif }
internal static void ExportSetting(FolderTemplate template) { string path = EditorUtility.SaveFilePanel("Export Setting", Application.dataPath, "Data", "json"); if (path.Length != 0) { string json = JsonUtility.ToJson(template); //save as JSON File.WriteAllText(path, json); //store json to file } }
void OnFocus() { folderTemplate = TidyUpCore.LoadSetting(); //LoadSetting only when focus to reduce some redundancy list = folderTemplate.folderTemplateList; // "target" can be any class derived from ScriptableObject // (could be EditorWindow, MonoBehaviour, etc) target = this; serializedObject = new SerializedObject(target); folderTemplateProperty = serializedObject.FindProperty("list"); }
/// <summary> /// LoadSetting() is called from `TidyUpSettingUI` to read Data.json file /// and populate the FolderTemplateList with data /// </summary> internal static FolderTemplate LoadSetting() { string json = ""; try { json = File.ReadAllText(Path.Combine(Application.dataPath, pathToResource)); } catch (System.Exception) //In case Data.json deleted somehow { RestSetting(); return(new FolderTemplate()); } //Reset Data file folderTemplate = JsonUtility.FromJson <FolderTemplate>(json); //retrieve JSON to object return(folderTemplate); }
internal static void CreateFolders() { folderTemplate = LoadSetting(); //populate folderTemplate with data foreach (var _folder in folderTemplate.folderTemplateList) { bool isExists = AssetDatabase.IsValidFolder("Assets" + _folder.folderName); if (isExists) //Skip Creating folder if it's already Exist { continue; } //Otherwise Create Folder Directory.CreateDirectory(Path.Combine(Application.dataPath + _folder.folderPath, _folder.folderName)); } //#if unity_editor UnityEditor.AssetDatabase.Refresh(); //#endif }
internal static void CleanRootDirectory() { folderTemplate = LoadSetting(); //populate folderTemplate with data DirectoryInfo dir = new DirectoryInfo(Application.dataPath); FileInfo[] info = dir.GetFiles("*.*", System.IO.SearchOption.TopDirectoryOnly); //get only files in root Directory var _scenesFolder = folderTemplate.folderTemplateList.Find(item => item.assetType == AssetType.Scenes); var _animationsFolder = folderTemplate.folderTemplateList.Find(item => item.assetType == AssetType.Animations); var _audioFolder = folderTemplate.folderTemplateList.Find(item => item.assetType == AssetType.Audio); var _fontsFolder = folderTemplate.folderTemplateList.Find(item => item.assetType == AssetType.Fonts); var _materialsFolder = folderTemplate.folderTemplateList.Find(item => item.assetType == AssetType.Materials); var _modelsFolder = folderTemplate.folderTemplateList.Find(item => item.assetType == AssetType.Models); var _texturesFolder = folderTemplate.folderTemplateList.Find(item => item.assetType == AssetType.Textures); var _prefabsFolder = folderTemplate.folderTemplateList.Find(item => item.assetType == AssetType.Prefabs); var _scriptsFolder = folderTemplate.folderTemplateList.Find(item => item.assetType == AssetType.Scripts); foreach (FileInfo file in info) //Loop over root files { int extensionPos = file.ToString().IndexOf("."); string extension = file.ToString().Substring(extensionPos).ToLower(); if (extension == ".unity" || extension == ".unity.meta") //if file is Scene { AssetDatabase.MoveAsset( "Assets/" + file.Name, Path.Combine("Assets" + _scenesFolder.folderPath + _scenesFolder.folderName, file.Name)); } else if (extension == ".anim" || extension == ".anim.meta") //if file is Animation { AssetDatabase.MoveAsset( "Assets/" + file.Name, Path.Combine("Assets" + _animationsFolder.folderPath + _animationsFolder.folderName, file.Name)); } else if (extension == ".mp3" || extension == ".mp3.meta" || extension == ".ogg" || extension == ".ogg.meta" || extension == ".wav" || extension == ".wav.meta" || extension == ".mod" || extension == ".mod.meta" || extension == ".it" || extension == ".it.meta" || extension == ".s3m" || extension == ".s3m.meta" || extension == ".xm" || extension == ".xm.meta" || extension == ".aiff" || extension == ".aiff.meta" || extension == ".aif" || extension == ".aif.meta") //if file is Audio { AssetDatabase.MoveAsset( "Assets/" + file.Name, Path.Combine("Assets" + _audioFolder.folderPath + _audioFolder.folderName, file.Name)); } else if (extension == ".ttf" || extension == ".ttf.meta" || extension == ".otf" || extension == ".otf.meta") //if file is Font { AssetDatabase.MoveAsset( "Assets/" + file.Name, Path.Combine("Assets" + _fontsFolder.folderPath + _fontsFolder.folderName, file.Name)); } else if (extension == ".mat" || extension == ".mat.meta") //if file is Material { AssetDatabase.MoveAsset( "Assets/" + file.Name, Path.Combine("Assets" + _materialsFolder.folderPath + _materialsFolder.folderName, file.Name)); } else if (extension == ".fbx" || extension == ".fbx.meta" || extension == ".dae" || extension == ".dae.meta" || extension == ".dxf" || extension == ".dxf.meta" || extension == ".obj" || extension == ".obj.meta" || extension == ".max" || extension == ".max.meta" || extension == ".blend" || extension == ".blend.meta") //if file is Model { AssetDatabase.MoveAsset( "Assets/" + file.Name, Path.Combine("Assets" + _modelsFolder.folderPath + _modelsFolder.folderName, file.Name)); } else if (extension == ".bmp" || extension == ".bmp.meta" || extension == ".exr" || extension == ".exr.meta" || extension == ".gif" || extension == ".gif.meta" || extension == ".hdr" || extension == ".hdr.meta" || extension == ".iff" || extension == ".iff.meta" || extension == ".jpg" || extension == ".jpg.meta" || extension == ".pict" || extension == ".pict.meta" || extension == ".png" || extension == ".png.meta" || extension == ".psd" || extension == ".psd.meta" || extension == ".tga" || extension == ".tga.meta" || extension == ".tiff" || extension == ".tiff.meta") //if file is Texture { AssetDatabase.MoveAsset( "Assets/" + file.Name, Path.Combine("Assets" + _texturesFolder.folderPath + _texturesFolder.folderName, file.Name)); } else if (extension == ".prefab" || extension == ".prefab.meta") //if file is Prefab { AssetDatabase.MoveAsset( "Assets/" + file.Name, Path.Combine("Assets" + _prefabsFolder.folderPath + _prefabsFolder.folderName, file.Name)); } else if (extension == ".cs" || extension == ".cs.meta") //if file is Script { AssetDatabase.MoveAsset( "Assets/" + file.Name, Path.Combine("Assets" + _scriptsFolder.folderPath + _scriptsFolder.folderName, file.Name)); } } }