Version: 2021.2
  • C#


Suggest a change


Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.


Submission failed

For some reason your suggested change could not be submitted. Please <a>try again</a> in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.




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


asset Object to use in creating the asset.
path Filesystem path for the new asset.


Creates a new native Unity asset.

Use this method to create a native Unity asset. Native assets are those created by Unity (either in the editor or via script), and are in Unity’s serialized format.

If an asset already exists the path you specify it will be overwritten with your new asset. The path is relative to the project folder, for example: "Assets/MyStuff/hello.mat".

An asset file can contain multiple assets. After you create an asset file, you can add more assets to the file using AssetDatabase.AddObjectToAsset.

You cannot use this method to create an asset from a GameObject. To do this, use the PrefabUtility class instead.

Be aware that if you are adding multiple objects to an asset, the order in which the objects are added does not matter. In other words, the first asset added will not be special within the asset file, and there is no "root" asset or object to which other assets are added to.

Note: You must ensure that the path you provide uses a native asset extension. For example, ".mat" for materials, ".cubemap" for cubemaps, ".GUISkin" for skins, ".anim" for animations and ".asset" for arbitrary other assets. The full list of native asset extensions can be found here under the details for NativeFormatImporter. This method is not intended for creating non-native assets, such as text files or image files.

Note: You cannot create assets inside the streaming assets folder (Assets/StreamingAssets).

This method reports an error in the console if you use an incorrect extension, or if you try to create an asset in the streaming assets folder. These errors will become exceptions in a future release of 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)); } }