# GetCorrespondingObjectFromSource<TObject>(TObject)

> Retrieves the corresponding source prefab asset object of a given GameObject or component, or null if it can't be found.

## Definition

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

## GetCorrespondingObjectFromSource\<T>(T)

```csharp
public static TObject GetCorrespondingObjectFromSource<TObject>(TObject componentOrGameObject) where TObject : Object
```

### Parameters

**** (T): The object to find the corresponding object from.

### Returns

| Type | Description                       |
| ---- | --------------------------------- |
| T    | The corresponding object or null. |

### Remarks

Use this method to get the source prefab asset object the GameObject or component was instantiated from.

For example, in the diagram shown below, prefab asset "A" contains a child nested prefab "B", which contains a child nested prefab "C".

![nested prefab instance example (GetCorrespondingObjectFromSource\<TObject>(TObject))](/api/media?file=/engine/6000.0/media/images/nested-prefab-instance-example.png)

When GameObject C (the instance of nested prefab C in the hierarchy) is passed in as the source to this method, this method returns the object "C (Nested Prefab)" from the asset "Prefab A".

In this example scenario, if you supply the instance of GameObject C as the `componentOrGameObject` parameter to `GetCorrespondingObjectFromSource`, then the method returns the object C from the asset Prefab A.

For more information about source objects, refer to [Introduction to prefabs](/engine/6000.0/manual/working-with-gameobjects/prefabs/introduction.md).

The following example adds a menu item to the Editor, which launches a simple wizard that allows you to test the results of this method.

```csharp
using UnityEditor;
using UnityEngine;
public class AssetSourceTestWizard : ScriptableWizard
{
    public GameObject instance;

    [MenuItem("Test/Asset Source Test Wizard")]
    static void CreateWizard()
    {
        ScriptableWizard.DisplayWizard<AssetSourceTestWizard>("Asset Source Test Wizard", "Do Test");
    }

    void OnWizardCreate()
    {
        var o1 = PrefabUtility.GetCorrespondingObjectFromSource(instance);
        Debug.Log("Corresponding object from source: " + o1.name + " from: " + AssetDatabase.GetAssetPath(o1));
    }
}
```

See also: [PrefabUtility.GetCorrespondingObjectFromSourceAtPath](/engine/6000.0/script-reference/unityeditor/prefabutility/getcorrespondingobjectfromsourceatpath.md), [PrefabUtility.GetOriginalSourceRootWhereGameObjectIsAdded](/engine/6000.0/script-reference/unityeditor/prefabutility/getoriginalsourcerootwheregameobjectisadded.md), [PrefabUtility.GetCorrespondingObjectFromOriginalSource](/engine/6000.0/script-reference/unityeditor/prefabutility/getcorrespondingobjectfromoriginalsource.md).
