版本:Unity 6(6000.0)
语言英语
  • C#

PrefabUtility.GetOriginalSourceRootWhereGameObjectIsAdded

提出建议

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们会阅读来自用户的每条建议更改,并在适用的情况下进行更新。

关闭

提交失败

由于某种原因,无法提交您建议的更改。请在几分钟内<a>重试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

声明

public static GameObject GetOriginalSourceRootWhereGameObjectIsAdded(GameObject gameObject);

参数

gameObject 来自预制实例或预制资源的 GameObject。

返回

GameObject 添加输入 GameObject 的预制资源根。

说明

使用此方法可以查找最初添加预制实例或预制资源对象的预制资源根。

使用此方法可以查找添加输入对象的“原始源”。当与嵌套预制一起使用并且您需要在哪个预制中最初添加您的嵌套预制的实例时,此方法非常有用。

例如,在下面显示的图表中,预制资源“A”包含一个子项嵌套预制“B”,它包含一个子项嵌套预制“C”。



由于此结构,预制“C”同时存在于“A”和“B”中,但是它最初是在“B”中添加的。

因此,在此示例场景中,当将 GameObject “C(实例)”作为源传递给此方法时,此方法将返回资源“B”。

重新构建对话框中的“打开预制”按钮使用此方法来确定要在预制模式下打开的正确预制资源。

以下示例脚本将菜单项添加到编辑器,它会启动一个简单的向导,让您测试此方法的结果。

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

另请参阅:GetCorrespondingObjectFromSourceGetCorrespondingObjectFromSourceAtPathGetCorrespondingObjectFromOriginalSource