示例#1
0
        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();
            }
        }
示例#2
0
        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);
        }