private static AssetReferenceInfo FindReferencesCore(FindReferenceContext ctx, UnityEngine.Object targetObject) { try { var assetPath = Application.dataPath; var projectPath = Directory.GetParent(assetPath).ToString(); TargetAssetInfo targetAssetInfo = null; var targetObjectPath = AssetDatabase.GetAssetPath(targetObject); var targetObjectFullPath = Path.Combine(projectPath, targetObjectPath); targetAssetInfo = new TargetAssetInfo(targetObject, targetObjectFullPath.Substring(projectPath.Length + 1), targetObjectFullPath); var assets = ctx.Scenes.Concat(ctx.Prefabs).Concat(ctx.Materials).Concat(ctx.Assets); foreach (var asset in assets) { if (targetAssetInfo.IsReferencedFrom(asset)) { targetAssetInfo.AssetReferenceInfo.Dependencies.Add(asset.FullPath.Substring(projectPath.Length + 1)); } } return(targetAssetInfo.AssetReferenceInfo); } finally { EditorUtility.ClearProgressBar(); } }
public static AssetReferenceInfo Execute(UnityEngine.Object targetObject) { try { var assetPath = Application.dataPath; Action <int, int> reportProgress = (current, total) => { var title = "Find References In Project"; var info = string.Format("Loading Dependencies ({0}/{1})", current, total); var progress = current / (float)total; EditorUtility.DisplayProgressBar(title, info, progress); }; var scenes = FindAllFiles(assetPath, "*.unity"); var prefabs = FindAllFiles(assetPath, "*.prefab"); var materials = FindAllFiles(assetPath, "*.mat"); var assets = FindAllFiles(assetPath, "*.asset"); var ctx = new FindReferenceContext(scenes, prefabs, materials, assets, reportProgress); return(FindReferencesCore(ctx, targetObject)); } catch (Exception ex) { Debug.LogException(ex); } finally { EditorUtility.ClearProgressBar(); } return(null); }