unity反向查找资源依赖

来源:互联网 发布:网络自由度排名 编辑:程序博客网 时间:2024/06/03 17:52
using UnityEngine;using System.Collections;using UnityEditor;using System.IO;using System.Linq;using System.Text;using System.Text.RegularExpressions;using System.Collections.Generic; public class FindReferences{      [MenuItem("Assets/Find References", false, 10)]    static private void Find()    {        EditorSettings.serializationMode = SerializationMode.ForceText;        string path = AssetDatabase.GetAssetPath(Selection.activeObject);        if (!string.IsNullOrEmpty(path))        {            string guid = AssetDatabase.AssetPathToGUID(path);            var withoutExtensions = new List<string>(){".prefab",".unity",".mat",".asset"};            string[] files = Directory.GetFiles(Application.dataPath, "*.*", SearchOption.AllDirectories)                .Where(s => withoutExtensions.Contains(Path.GetExtension(s).ToLower())).ToArray();            int startIndex = 0;             EditorApplication.update = delegate()            {                string file = files[startIndex];                             bool isCancel = EditorUtility.DisplayCancelableProgressBar("匹配资源中", file, (float)startIndex / (float)files.Length);                 if (Regex.IsMatch(File.ReadAllText(file), guid))                {                    Debug.Log(file, AssetDatabase.LoadAssetAtPath<Object>(GetRelativeAssetsPath(file)));                }                 startIndex++;                if (isCancel || startIndex >= files.Length)                {                    EditorUtility.ClearProgressBar();                    EditorApplication.update = null;                    startIndex = 0;                    Debug.Log("匹配结束");                }             };        }    }     static private string GetRelativeAssetsPath(string path)    {        return "Assets" + Path.GetFullPath(path).Replace(Path.GetFullPath(Application.dataPath), "").Replace('\\', '/');    }}

原创粉丝点击