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

AssetDatabase.CreateAsset

建议更改

成功!

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

关闭

提交失败

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

关闭

取消

声明

public static void CreateAsset(Object asset, string path);

参数

asset 用于创建资源的对象。
path 新资源的文件系统路径。

描述

创建一个新的原生 Unity 资源。

使用此方法创建原生 Unity 资源。原生资源是由 Unity 创建的(在编辑器中或通过脚本),并且采用 Unity 的序列化格式。

如果指定路径的资源已存在,它将被您的新资源覆盖。路径相对于项目文件夹,例如:“Assets/MyStuff/hello.mat”。

一个资源文件可以包含多个资源。创建资源文件后,可以使用 AssetDatabase.AddObjectToAsset 将更多资源添加到该文件。

无法使用此方法从游戏对象创建资源。要执行此操作,请改用 PrefabUtility 类。

请注意,如果将多个对象添加到资源中,添加对象的顺序无关紧要。换句话说,添加的第一个资源在资源文件中不会有任何特殊之处,并且没有“根”资源或对象将其他资源添加到其中。

注意:必须确保提供的路径使用原生资源扩展名。例如,材料使用“.mat”,立方体贴图使用“.cubemap”,皮肤使用“.GUISkin”,动画使用“.anim”,其他任意资源使用“.asset”。可以在 此处(NativeFormatImporter 的详细信息下) 找到完整列表的原生资源扩展名。此方法不适用于创建非原生资源,例如文本文件或图像文件。

注意:无法在 Streaming Assets 文件夹(Assets/StreamingAssets)中创建资源。

注意:不应在导入过程中创建资源,例如从脚本化导入器或后期处理器中创建。这样做可能会阻止导入过程产生一致(确定性)的结果。有关更多信息,请参阅 导入器一致性

如果使用不正确的扩展名或尝试在 Streaming Assets 文件夹中创建资源,此方法会在控制台中报告错误。这些错误将在 Unity 的未来版本中变为异常。

如果在导入期间使用此方法,它会在控制台中报告警告,但此警告将在 Unity 的未来版本中变为异常。

using UnityEngine;
using UnityEditor;

public class CreateMaterialExample : MonoBehaviour { [MenuItem("GameObject/Create Material")] static void CreateMaterial() { // Create a simple material asset

Material material = new Material(Shader.Find("Specular")); AssetDatabase.CreateAsset(material, "Assets/MyMaterial.mat");

// Print the path of the created asset Debug.Log(AssetDatabase.GetAssetPath(material)); } }