PrefabUtility.GetOriginalSourceRootWhereGameObjectIsAdded
Declaration
public static GameObject GetOriginalSourceRootWhereGameObjectIsAdded(GameObject gameObject);Параметры
| Параметр | Описание |
|---|---|
| gameObject | GameObject из экземпляра Префаб или из ассета Префаб. |
Возвращаемое значение
GameObject Корень ассета Префаб, в который был добавлен ввод GameObject.
Описание
Используйте этот метод, чтобы найти корень Префаб Asset, в котором изначально был добавлен экземпляр Префаб или объект Префаб Asset.
Используйте этот метод для поиска "исходного источника", в котором был добавлен входной объект. Это полезно в ситуациях, когда вы работаете с вложенным префабы, и вам нужно узнать, в котором префаб был добавлен ваш экземпляр вложенного префаб.
Например, на следующей диаграмме префаб asset A содержит вложенный дочерний префаб B, который содержит вложенный дочерний префаб C.
На рисунке показаны вложенные префаб assets, где B и C вложены под A, а C вложен под B, и как эта структура переносится на их вложенные экземпляры в окне Hierarchy.
Из-за этой структуры, префаб C существует как в A, так и в B, но первоначально был добавлен в B.
В этом примере, если вы вызываете GetOriginalSourceRootWhereGameObjectIsAdded и предоставляете экземпляр GameObject C как gameObject, то метод возвращает ассет B.
Кнопка Open Префаб в диалоге Реструктуризация использует этот метод для определения правильного ассета префаб для открытия в режиме редактирования префаб.
Приведенный ниже пример сценария добавляет пункт меню в редактор, который запускает простой мастер, позволяющий проверить результаты этого метода.
using UnityEditor; using UnityEngine; public class AssetSourceTestWizard : ScriptableWizard { public GameObject instance;
[MenuItem("Test/Asset Source Test Wizard")] static void CreateWizard() { ScriptableWizard.DisplayWizard<AssetSourceTestWizard>("Asset Source Test Wizard", "Do Test"); }
void OnWizardCreate() { var o1 = PrefabUtility.GetOriginalSourceRootWhereGameObjectIsAdded(instance); Debug.Log("Original source root where GameObject is added: " + o1.name + " from: " + AssetDatabase.GetAssetPath(o1)); } }
Если вам нужно знать первоначальный источник для данного GameObject или Компонента (не где он добавлен), то используйте GetCorrespondingObjectFromOriginalSource.
См. также: GetCorrespondingObjectFromSource, GetCorrespondingObjectFromSourceAtPath, GetCorrespondingObjectFromOriginalSource.