Documentation

Unity Engine


User Manual

Script Reference

Unity Engine


LoadPrefabContents(string)

Loads a Prefab Asset at a given path into an isolated Scene and returns the root GameObject of the Prefab.
Read time 1 minuteLast updated 13 days ago

Definition

  • Type: Method
  • Namespace: UnityEditor
  • Assembly: UnityEditor
public static GameObject LoadPrefabContents(string assetPath)

Parameters

assetPath

The path of the Prefab Asset to load the contents of.

Returns

Type

Description

GameObjectThe root of the loaded contents.

Remarks

You can use this to get the content of the Prefab and modify it directly instead of going through an instance of the Prefab. This is useful for batch operations.
To release the prefab and isolated scene from memory when you are finished with it, call PrefabUtility.UnloadPrefabContents. If you modified the Prefab contents, use PrefabUtility.SaveAsPrefabAsset to save any changes, and then call PrefabUtility.UnloadPrefabContents.

Examples

using UnityEngine;using UnityEditor;public class Example{ [MenuItem("Examples/Add BoxCollider to Prefab Asset")] static void AddBoxColliderToPrefab() { // Get the Prefab Asset root GameObject and its asset path. GameObject assetRoot = Selection.activeObject as GameObject; string assetPath = AssetDatabase.GetAssetPath(assetRoot); // Load the contents of the Prefab Asset. GameObject contentsRoot = PrefabUtility.LoadPrefabContents(assetPath); // Modify Prefab contents. contentsRoot.AddComponent<BoxCollider>(); // Save contents back to Prefab Asset and unload contents. PrefabUtility.SaveAsPrefabAsset(contentsRoot, assetPath); PrefabUtility.UnloadPrefabContents(contentsRoot); } [MenuItem("Examples/Add BoxCollider to Prefab Asset", true)] static bool ValidateAddBoxColliderToPrefab() { GameObject go = Selection.activeObject as GameObject; if (go == null) return false; return PrefabUtility.IsPartOfPrefabAsset(go); }}