# FindValidUploadPrefabInstanceRoot(GameObject)

> Returns the root GameObject of the Prefab instance if that root Prefab instance is a parent of the Prefab.

## Definition

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

> **Warning:**
>
> **Deprecated.** FindValidUploadPrefabInstanceRoot is deprecated, please use GetOutermostPrefabInstanceRoot instead.

```csharp
public static GameObject FindValidUploadPrefabInstanceRoot(GameObject target)
```

### Parameters

**** (\[GameObject]\(/engine/6000.0/script-reference/unityengine/gameobject)): GameObject to process.

### Returns

| Type                                                                    | Description                                      |
| ----------------------------------------------------------------------- | ------------------------------------------------ |
| [GameObject](/engine/6000.0/script-reference/unityengine/gameobject.md) | Return the root game object of the Prefab Asset. |

### Remarks

A Prefab internally consists of a Prefab object and the list of objects used for the Prefab. The Prefab object has a reference to the root GameObject. Also, if the Prefab is an instance, it contains a reference to the Prefab Asset it was created from and a list of the overrides (if any) on the instance.

This  works in the same way as [PrefabUtility.FindRootGameObjectWithSameParentPrefab](/engine/6000.0/script-reference/unityeditor/prefabutility/findrootgameobjectwithsameparentprefab.md) but it will return the root GameObject of the Prefab Asset. This is useful if you have a disconnected Prefab instance object and you want to know the root game object of the Prefab Asset which it used to be connected to.
