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).
Note: You should not create assets during import, for example from within a ScriptedImporter or Postprocessor. Doing so can prevent the import process from producing consistent (deterministic) results. See Importer Consistency for more information.
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.
This method reports a warning in the console if used during an import, but this will become an exception 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)); } }