static UInt64 GetFileIDForCorrespondingObjectFromSourceAtPath(GameObject gameObject, string prefabAssetPath) { if (gameObject == null) { return(0); } if (EditorUtility.IsPersistent(gameObject)) { return(0); } if (!PrefabUtility.IsPartOfNonAssetPrefabInstance(gameObject)) { return(0); } GameObject assetGameObject = PrefabUtility.GetCorrespondingObjectFromSourceAtPath(gameObject, prefabAssetPath); if (assetGameObject == null) { return(0); } return(Unsupported.GetOrGenerateFileIDHint(assetGameObject)); }
internal static GameObject FindFirstGameObjectThatMatchesFileID(Transform searchRoot, UInt64 fileID, bool generate) { GameObject result = null; var transformVisitor = new TransformVisitor(); transformVisitor.VisitAndAllowEarlyOut(searchRoot, (transform, userdata) => { UInt64 id = generate ? Unsupported.GetOrGenerateFileIDHint(transform.gameObject) : GetPrefabOrVariantFileID(transform.gameObject); if (id == fileID) { result = transform.gameObject; return(false); // stop searching } return(true); // continue searching } , null); return(result); }