/// <summary> /// Creates the asset and any directories that are missing along its path. /// </summary> /// <param name="unityObject">UnityObject to create an asset for.</param> /// <param name="unityFilePath">Unity file path (e.g. "Assets/Resources/MyFile.asset".</param> public static void CreateAssetAndDirectories(UnityEngine.Object unityObject, string unityFilePath) { var pathDirectory = Path.GetDirectoryName(unityFilePath) + UnityDirectorySeparator; AssetDatabaseUtility.CreateDirectoriesInPath(pathDirectory); AssetDatabase.CreateAsset(unityObject, unityFilePath); }
/// <summary> /// Loads the saved data, stored as a ScriptableObject at the specified path. If the file or folders don't exist, /// it creates them. /// </summary> /// <returns>The saved data as a ScriptableObject.</returns> /// <param name="unityPathToFile">Unity path to file (e.g. "Assets/Resources/MyFile.asset")</param> /// <typeparam name="T">The ScriptableObject type</typeparam> public static T LoadOrCreateSaveData <T>(string unityPathToFile) where T : ScriptableObject { var loadedSettings = LoadSaveData <T>(unityPathToFile); if (loadedSettings == null) { loadedSettings = ScriptableObject.CreateInstance <T>(); AssetDatabaseUtility.CreateAssetAndDirectories(loadedSettings, unityPathToFile); } return(loadedSettings); }
private void ShowTargetLocationOptions(string label, AssetTargetLocation targetLocation) { EditorGUILayout.BeginHorizontal(); GUILayout.Label(label, GUILayout.Width(130f)); targetLocation.locationType = (AssetTargetLocationType)EditorGUILayout.EnumPopup(targetLocation.locationType, GUILayout.Width(130f)); bool prevEnabled = GUI.enabled; GUI.enabled = targetLocation.locationType == AssetTargetLocationType.GlobalDirectory; string globalDirectory = targetLocation.globalDirectory; if (GUILayout.Button("Select", GUILayout.Width(50f))) { var startDirectory = globalDirectory; if (!Directory.Exists(startDirectory)) { startDirectory = Application.dataPath; } startDirectory = Application.dataPath; var path = EditorUtility.OpenFolderPanel("Select Target Location", globalDirectory, ""); if (!string.IsNullOrEmpty(path) && AssetDatabase.IsValidFolder(AssetDatabaseUtility.GetAssetPath(path))) { targetLocation.globalDirectory = AssetDatabaseUtility.GetAssetPath(path); } } if (targetLocation.locationType == AssetTargetLocationType.GlobalDirectory) { string displayDirectory = "/" + globalDirectory; EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); GUILayout.Label(displayDirectory, GUILayout.MaxWidth(300f)); } GUI.enabled = prevEnabled; EditorGUILayout.EndHorizontal(); }