# SaveAssets()

> Writes all unsaved asset changes to disk.

## Definition

* **Type:** Method
* **Namespace:** [UnityEditor](/engine/6000.6/script-reference/unityeditor.md)
* **Assembly:** UnityEditor.CoreModule

```csharp
public static void SaveAssets()
```

### Remarks

Identical to [EditorApplication.SaveAssets](/engine/6000.6/script-reference/unityeditor/editorapplication/saveassets.md) except not permitted to be called during serialization.

When calling this function, [AssetModificationProcessor.OnWillSaveAssets(string\[\])](/engine/6000.6/script-reference/unityeditor/assetmodificationprocessor/onwillsaveassets.md) will be invoked, allowing you to override which files are saved to disk.

[EditorApplication.SaveAssets](/engine/6000.6/script-reference/unityeditor/editorapplication/saveassets.md) will be deprecated in a future release. Please use [AssetDatabase.SaveAssets](/engine/6000.6/script-reference/unityeditor/assetdatabase/saveassets.md) to maintain future compatibility.

### Examples

```csharp
using UnityEngine;
using UnityEditor;
using System.Text;

public class SaveAssetsExample : MonoBehaviour
{
    [MenuItem("APIExamples/SaveAssets")]
    static void AssetsToBeSaved()
    {
        Color[] colorList = new[] { Color.red, Color.green, Color.blue, Color.black, Color.gray };

        for (int i = 0; i < colorList.Length; ++i)
        {
            Material material = new Material(Shader.Find("Specular"));
            var materialName = "material_" + i + ".mat";
            AssetDatabase.CreateAsset(material, "AssetsArtifacts" + materialName);

            material.SetColor("_Color", colorList[i]);
        }

        AssetDatabase.SaveAssets();
    }
}

public class OutputListOfFilesToSave : UnityEditor.AssetModificationProcessor
{
    //Will be invoked once for each call to CreateAsset()
    //and once for calling AssetDatabase.SaveAssets()
    static string[] OnWillSaveAssets(string[] paths)
    {
        Debug.Log("OnWillSaveAssets invoked");

        StringBuilder assetsToBeSaved = new StringBuilder();
        assetsToBeSaved.AppendLine();

        foreach (string path in paths)
        {
            assetsToBeSaved.Append(path);
            assetsToBeSaved.AppendLine();
        }

        Debug.Log("Assets to be saved:" + assetsToBeSaved.ToString());

        return paths;
    }
}
```
