/// <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); }