IsMainAsset
Checks whether the asset is a main asset in the Project window.
Read time 4 minutesLast updated 8 days ago
Definition
- Type: Method
- Namespace: UnityEditor
- Assembly: UnityEditor
IsMainAsset(Object)
Checks whether the asset is a main asset in the Project window.
public static bool IsMainAsset(Object obj)
Parameters
The object of the asset.
Returns
Type | Description |
|---|---|
| bool | True if the asset is a main asset, false otherwise. |
Remarks
For example, an imported model has a GameObject as its root and several meshes and child GameObjects in an expanded state. The root GameObject is the main asset in this case.
Examples
using UnityEditor;using UnityEngine;public class Scriptable : ScriptableObject{}public class AssetDatabaseExamples : MonoBehaviour{ [MenuItem("AssetDatabase/Is Main Asset Example")] static void IsMainAssetExample() { var materialAsset = new Material(Shader.Find("Standard")); //materialAsset is still in memory, therefore this will be False Debug.Log(AssetDatabase.IsMainAsset(materialAsset)); //Create a Scriptable object var scriptableAssetPath = "Assets/ScriptableObjects/NewObject.asset"; var mainAsset = ScriptableObject.CreateInstance<Scriptable>(); AssetDatabase.CreateAsset(mainAsset, scriptableAssetPath); //Add the Material Asset to the Scriptable object, so that the Material becomes a Sub Asset of the Scriptable object AssetDatabase.AddObjectToAsset(materialAsset, scriptableAssetPath); AssetDatabase.SaveAssets(); //This will be false because material asset has been added to the main Asset and is now a Sub Asset Debug.Log(AssetDatabase.IsMainAsset(materialAsset)); //Remove the subAsset from the Scriptable object and create it as an Asset AssetDatabase.RemoveObjectFromAsset(materialAsset); AssetDatabase.CreateAsset(materialAsset, "Assets/Materials/New Mat0.mat"); //This will be True because the material is now the main Asset Debug.Log(AssetDatabase.IsMainAsset(materialAsset)); }}
IsMainAsset(EntityId)
Checks whether the asset is a main asset in the Project window.
public static bool IsMainAsset(EntityId entityId)
Parameters
The EntityID of the asset.
Returns
Type | Description |
|---|---|
| bool | True if the asset is a main asset, false otherwise. |
Remarks
For example, an imported model has a GameObject as its root and several meshes and child GameObjects in an expanded state. The root GameObject is the main asset in this case.
Examples
using UnityEditor;using UnityEngine;public class Scriptable : ScriptableObject{}public class AssetDatabaseExamples : MonoBehaviour{ [MenuItem("AssetDatabase/Is Main Asset Example")] static void IsMainAssetExample() { var materialAsset = new Material(Shader.Find("Standard")); //materialAsset is still in memory, therefore this will be False Debug.Log(AssetDatabase.IsMainAsset(materialAsset)); //Create a Scriptable object var scriptableAssetPath = "Assets/ScriptableObjects/NewObject.asset"; var mainAsset = ScriptableObject.CreateInstance<Scriptable>(); AssetDatabase.CreateAsset(mainAsset, scriptableAssetPath); //Add the Material Asset to the Scriptable object, so that the Material becomes a Sub Asset of the Scriptable object AssetDatabase.AddObjectToAsset(materialAsset, scriptableAssetPath); AssetDatabase.SaveAssets(); //This will be false because material asset has been added to the main Asset and is now a Sub Asset Debug.Log(AssetDatabase.IsMainAsset(materialAsset)); //Remove the subAsset from the Scriptable object and create it as an Asset AssetDatabase.RemoveObjectFromAsset(materialAsset); AssetDatabase.CreateAsset(materialAsset, "Assets/Materials/New Mat0.mat"); //This will be True because the material is now the main Asset Debug.Log(AssetDatabase.IsMainAsset(materialAsset)); }}
IsMainAsset(int)
Checks whether the asset is a main asset in the Project window.
public static bool IsMainAsset(int instanceID)
Parameters
The instanceID of the asset.
Returns
Type | Description |
|---|---|
| bool | True if the asset is a main asset, false otherwise. |
Remarks
For example, an imported model has a GameObject as its root and several meshes and child GameObjects in an expanded state. The root GameObject is the main asset in this case.
Examples
using UnityEditor;using UnityEngine;public class Scriptable : ScriptableObject{}public class AssetDatabaseExamples : MonoBehaviour{ [MenuItem("AssetDatabase/Is Main Asset Example")] static void IsMainAssetExample() { var materialAsset = new Material(Shader.Find("Standard")); //materialAsset is still in memory, therefore this will be False Debug.Log(AssetDatabase.IsMainAsset(materialAsset)); //Create a Scriptable object var scriptableAssetPath = "Assets/ScriptableObjects/NewObject.asset"; var mainAsset = ScriptableObject.CreateInstance<Scriptable>(); AssetDatabase.CreateAsset(mainAsset, scriptableAssetPath); //Add the Material Asset to the Scriptable object, so that the Material becomes a Sub Asset of the Scriptable object AssetDatabase.AddObjectToAsset(materialAsset, scriptableAssetPath); AssetDatabase.SaveAssets(); //This will be false because material asset has been added to the main Asset and is now a Sub Asset Debug.Log(AssetDatabase.IsMainAsset(materialAsset)); //Remove the subAsset from the Scriptable object and create it as an Asset AssetDatabase.RemoveObjectFromAsset(materialAsset); AssetDatabase.CreateAsset(materialAsset, "Assets/Materials/New Mat0.mat"); //This will be True because the material is now the main Asset Debug.Log(AssetDatabase.IsMainAsset(materialAsset)); }}