# IsSubAsset

> Checks whether the asset is part of another asset.

## Definition

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

## IsSubAsset(Object)

Checks whether the asset is part of another asset.

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

### Parameters

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

### Returns

| Type                                                          | Description                                                  |
| ------------------------------------------------------------- | ------------------------------------------------------------ |
| [bool](https://learn.microsoft.com/dotnet/api/system.boolean) | True if the asset is part of another asset, otherwise false. |

### Remarks

Some assets may form part of another asset (for example, a procedural material can be part of a material package). This method determines whether an asset is subordinated in this way.

### Examples

```csharp
using UnityEditor;
using UnityEngine;
public class Scriptable : ScriptableObject
{
}

public class AssetDatabaseExamples : MonoBehaviour
{
    [MenuItem("AssetDatabase/Is Sub Asset Example")]
    static void IsSubAssetExample()
    {
        var materialAsset = new Material(Shader.Find("Standard"));
        //materialAsset is still in memory, therefore this will be False
        Debug.Log(AssetDatabase.IsSubAsset(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 True because the Material asset has been added to the mainAsset and is now a Sub Asset
        Debug.Log(AssetDatabase.IsSubAsset(materialAsset));
    }
}
```

## IsSubAsset(EntityId)

Checks whether the asset is part of another asset.

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

### Parameters

**** (\[EntityId]\(/engine/6000.6/script-reference/unityengine/entityid)): The EntityID of the asset object to query.

### Returns

| Type                                                          | Description                                                  |
| ------------------------------------------------------------- | ------------------------------------------------------------ |
| [bool](https://learn.microsoft.com/dotnet/api/system.boolean) | True if the asset is part of another asset, otherwise false. |

### Remarks

Some assets may form part of another asset (for example, a procedural material can be part of a material package). This method determines whether an asset is subordinated in this way.

### Examples

```csharp
using UnityEditor;
using UnityEngine;
public class Scriptable : ScriptableObject
{
}

public class AssetDatabaseExamples : MonoBehaviour
{
    [MenuItem("AssetDatabase/Is Sub Asset Example")]
    static void IsSubAssetExample()
    {
        var materialAsset = new Material(Shader.Find("Standard"));
        //materialAsset is still in memory, therefore this will be False
        Debug.Log(AssetDatabase.IsSubAsset(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 True because the Material asset has been added to the mainAsset and is now a Sub Asset
        Debug.Log(AssetDatabase.IsSubAsset(materialAsset));
    }
}
```

## IsSubAsset(int)

Checks whether the asset is part of another asset.

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

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

### Parameters

**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): Instance ID of the asset object to query.

### Returns

| Type                                                          | Description                                                  |
| ------------------------------------------------------------- | ------------------------------------------------------------ |
| [bool](https://learn.microsoft.com/dotnet/api/system.boolean) | True if the asset is part of another asset, otherwise false. |

### Remarks

Some assets may form part of another asset (for example, a procedural material can be part of a material package). This method determines whether an asset is subordinated in this way.

### Examples

```csharp
using UnityEditor;
using UnityEngine;
public class Scriptable : ScriptableObject
{
}

public class AssetDatabaseExamples : MonoBehaviour
{
    [MenuItem("AssetDatabase/Is Sub Asset Example")]
    static void IsSubAssetExample()
    {
        var materialAsset = new Material(Shader.Find("Standard"));
        //materialAsset is still in memory, therefore this will be False
        Debug.Log(AssetDatabase.IsSubAsset(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 True because the Material asset has been added to the mainAsset and is now a Sub Asset
        Debug.Log(AssetDatabase.IsSubAsset(materialAsset));
    }
}
```
