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