将所有未保存的资源更改写入磁盘。
与 EditorApplication.SaveAssets 相同,除了在序列化期间不允许调用。
调用此函数时,将调用 AssetModificationProcessor.OnWillSaveAssets,允许您覆盖写入磁盘的文件。
EditorApplication.SaveAssets 将在未来的版本中弃用。请使用 SaveAssets 以保持未来的兼容性。
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, "Assets/Artifacts/" + 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; } }