Unity工具 - 资源搜索

来源:互联网 发布:网络规划设计师是副高 编辑:程序博客网 时间:2024/05/05 13:57

转自:http://www.manew.com/thread-91059-1-1.html
查询一个资源在哪个场景被引用

using UnityEngine;using System.Collections;using UnityEditor;using System.IO;using System.Linq;using System.Text;using System.Text.RegularExpressions;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);            string withoutExtensions = "*.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("匹配结束");                }            };        }    }    [MenuItem("Assets/Find References", true)]    static private bool VFind()    {        string path = AssetDatabase.GetAssetPath(Selection.activeObject);        return (!string.IsNullOrEmpty(path));    }    static private string GetRelativeAssetsPath(string path)    {        return "Assets" + Path.GetFullPath(path).Replace(Path.GetFullPath(Application.dataPath), "").Replace('\\', '/');    }}
0 0
原创粉丝点击