版本: Unity 6 (6000.0)
语言英语
  • C#

AssetDatabase.SaveAssets

建议修改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们确实阅读了用户提出的每个建议的更改,并在适用时进行更新。

关闭

提交失败

由于某些原因,您的建议更改无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

声明

public static void SaveAssets();

描述

将所有未保存的资源更改写入磁盘。

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