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

PrefabUtility.GetCorrespondingObjectFromSourceAtPath

建议更改

成功!

感谢您帮助我们提升 Unity 文档的质量。尽管我们无法接受所有提交,但我们都会阅读用户提出的每一条建议的修改,并在适用时进行更新。

关闭

提交失败

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

关闭

取消

声明

public static TObject GetCorrespondingObjectFromSourceAtPath(TObject componentOrGameObject, string assetPath);

参数

componentOrGameObject 用于查找对应对象的物体。
assetPath Prefab 资源的资源路径,用于获取对应的对象。

返回值

TObject 对应的对象或 null。

说明

从给定的 Prefab 资源路径检索给定对象的对应对象。

当且仅当它在指定路径处的预制资源内时,使用此方法查找 source 的对应资源被实例化。

如果您没有指定的路径,可以使用 GetCorrespondingObjectFromSource

如果给定的对象在指定路径下的预制资源中没有对应的对象,则此方法返回 null。

例如,在下图中,预制资源 "A" 包含一个子级嵌套预制 "B",该预制又包含一个子级嵌套预制 "C"。



在此示例场景中,当 GameObject "C (实例)" 作为源传递给此方法,并且 "Assets/A.prefab" 作为路径传递时,此方法从预制资源 "A" 中返回对象 "C (嵌套预制)"。

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

using UnityEditor;
using UnityEngine;
public class AssetSourceTestWizard : ScriptableWizard
{
    public GameObject instance;
    public string path;

[MenuItem("Test/Asset Source Test Wizard")] static void CreateWizard() { ScriptableWizard.DisplayWizard<AssetSourceTestWizard>("Asset Source Test Wizard", "Do Test"); }

void OnWizardCreate() { var o1 = PrefabUtility.GetCorrespondingObjectFromSourceAtPath(instance, path); Debug.Log("Corresponding object from source: " + o1.name); } }