# IsMainAsset

> Checks whether an asset object is the main asset of its file in the Project window.

## Definition

* **Type:** Method
* **Namespace:** [UnityEditor](/engine/7000.0/script-reference/unityeditor.md)
* **Assembly:** UnityEditor.CoreModule

## IsMainAsset(Object)

Checks whether an asset object is the main asset of its file in the Project window.

```csharp
public static bool IsMainAsset(Object obj)
```

### Parameters

**** (\[Object]\(/engine/7000.0/script-reference/unityengine/object)): The asset object to check.

### Returns

| Type                                                          | Description                                          |
| ------------------------------------------------------------- | ---------------------------------------------------- |
| [bool](https://learn.microsoft.com/dotnet/api/system.boolean) | True if the asset is a main asset. Otherwise, false. |

### Remarks

A file can contain several assets, but only one of them is the main asset. For example, an imported model contains a root GameObject, meshes, and child GameObjects. The root GameObject is the main asset.

### Examples

```csharp
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 with the specified EntityId is the main asset of its file in the Project window.

```csharp
public static bool IsMainAsset(EntityId entityId)
```

### Parameters

**** (\[EntityId]\(/engine/7000.0/script-reference/unityengine/entityid)): The EntityId of the asset to check.

### Returns

| Type                                                          | Description                                          |
| ------------------------------------------------------------- | ---------------------------------------------------- |
| [bool](https://learn.microsoft.com/dotnet/api/system.boolean) | True if the asset is a main asset. Otherwise, false. |

### Remarks

A file can contain several assets, but only one of them is the main asset. For example, an imported model contains a root GameObject, meshes, and child GameObjects. The root GameObject is the main asset.

## IsMainAsset(int)

Checks whether the asset with the specified instance ID is the main asset of its file in the Project window.

> **Warning:**
>
> **Removed.** Please use IsMainAsset(EntityId) with the EntityId type instead.

```csharp
public static bool IsMainAsset(int instanceID)
```

### Parameters

**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): The instance ID of the asset to check.

### Returns

| Type                                                          | Description                                          |
| ------------------------------------------------------------- | ---------------------------------------------------- |
| [bool](https://learn.microsoft.com/dotnet/api/system.boolean) | True if the asset is a main asset. Otherwise, false. |

### Remarks

This overload is obsolete. Use the overload that takes an [EntityId](/engine/7000.0/script-reference/unityengine/entityid.md) instead.
