# SetMainObject(Object, string)

> Specifies which object in the asset file should become the main object after the next import.

## Definition

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

```csharp
public static void SetMainObject(Object mainObject, string assetPath)
```

### Parameters

**** (\[Object]\(/engine/6000.6/script-reference/unityengine/object)): The object to become the main object.**** (\[string]\(https\://learn.microsoft.com/dotnet/api/system.string)): Path to the asset file.

### Remarks

All other objects in the asset become children of the main object. NOTE: This function modifies the importer object, not the asset itself. The next import reflects the change in the imported asset.

### Examples

```csharp
using UnityEditor;
using UnityEngine;

public class Scriptable : ScriptableObject
{
}
public class AssetDatabaseExamples : MonoBehaviour
{
    [MenuItem("AssetDatabase/Set Main Object Example")]
    public static void SetMainObjectExample()
    {
        //Create a Scriptable Object and a Material
        var materialAsset = new Material(Shader.Find("Standard"));
        var scriptableAssetPath = "Assets/ScriptableObjects/NewObject.asset";
        var mainAsset = ScriptableObject.CreateInstance<Scriptable>();
        AssetDatabase.CreateAsset(mainAsset, scriptableAssetPath);

        //Add the Material to the Scriptable Object
        AssetDatabase.AddObjectToAsset(materialAsset, scriptableAssetPath);
        AssetDatabase.SaveAssets();

        //Set the Material to be the main Object and import it
        AssetDatabase.SetMainObject(materialAsset, scriptableAssetPath);
        AssetDatabase.ImportAsset(scriptableAssetPath);
    }
}
```
