Unity 6.3
0 онлайн 69 гостей 3 в системе
Вход

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); } }