PrefabUtility.LoadPrefabContents
Declaration
public static GameObject LoadPrefabContents(string assetPath);Параметры
| Параметр | Описание |
|---|---|
| assetPath | Путь к ресурсу Префаб для загрузки его содержимого. |
Возвращаемое значение
GameObject Корень загруженного содержимого.
Описание
Загружает ассет Префаб на заданном пути в изолированный Scene и возвращает корень GameObject из Префаб.
Вы можете использовать это для получения содержимого Префаб и изменения его непосредственно, вместо того, чтобы проходить через экземпляр Префаб. Это полезно для пакетных операций.
Чтобы освободить префаб и изолированную сцену из памяти, когда вы закончите с ней, вызовите UnloadPrefabContents. Если вы изменили содержимое Префаб, используйте SaveAsPrefabAsset для сохранения любых изменений, а затем вызовите UnloadPrefabContents.
Дополнительные ресурсы: EditPrefabContentsScope.
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); } }