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

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.