Параметры
assetPath | Путь Prefab Asset для загрузки содержимого. |
Возвращает
GameObject Корень загруженного содержимого.
Описание
Загружает Prefab Asset по заданному пути в изолированную сцену и возвращает корневой GameObject Prefab.
Вы можете использовать это, чтобы получить содержимое префаба и изменить его напрямую, вместо того, чтобы проходить через экземпляр префаба. Это полезно для пакетных операций.
После того как вы изменили префаб, вы должны записать его обратно, используя 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);
}
}