componentOrGameObject | 从中查找对应原始对象的组件或游戏对象。 |
TObject 原始来源的对应对象或 null。
检索给定对象的来源对象。
对于您传递给此方法的任何对象,Unity 会沿着对应对象链追踪,直到不再有更多对象并在找到最后一个对象后返回该对象。
您可以使用此方法来查找原始预制体资产,它是最原始的输入对象。
例如,在下图中,显示了预制体资产“A”包含子代嵌套预制体“B”,子代嵌套预制体“B”又包含子代嵌套预制体“C”。
由于此结构,预制体“C”存在于“A”和“B”中。它原本添加在“B”中,但是链中的最后一个对象是“C”
因此,在此示例场景中,当将 GameObject“C (实例)”作为源传递给此方法时,此方法将返回资产“C”。
以下示例脚本向编辑器中添加了一个菜单项,它将启动一个简单的向导,允许您测试此方法的结果。
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.GetCorrespondingObjectFromOriginalSource(instance); Debug.Log("Corresponding object from original source: " + o1.name + " from: " + AssetDatabase.GetAssetPath(o1)); } }
如果您需要知道给定的 GameObject 或组件最初添加的位置(而不是链中的最后一个对象),请使用 GetOriginalSourceRootWhereGameObjectIsAdded。
另请参见: GetCorrespondingObjectFromSource、GetCorrespondingObjectFromSourceAtPath、GetOriginalSourceRootWhereGameObjectIsAdded。