查找图片

    技术2022-07-11  119

    using UnityEngine; using UnityEngine.UI; using UnityEditor; using System.IO; using System.Collections.Generic;

    public class FindImage : EditorWindow {     static List<Object> list = new List<Object>();     Vector2 scrollerPos = new Vector2();     float width = 0;     float height = 0;     [MenuItem("自定义工具/换UI工具/查找图片")]     private static void ShowWindow()     {         EditorWindow.GetWindow<FindImage>(false, "FindSprite");     }     private void OnGUI()     {         GUILayout.Space(10);         EditorGUILayout.BeginHorizontal();         GUILayout.Label("Width");         width = EditorGUILayout.FloatField(width);         GUILayout.Label("Height");         height = EditorGUILayout.FloatField(height);         EditorGUILayout.EndHorizontal();         GUILayout.Space(10);         if (GUILayout.Button("Find"))         {             SearchImage();         }         scrollerPos = EditorGUILayout.BeginScrollView(scrollerPos);         foreach (var obj in list)         {             EditorGUILayout.ObjectField(obj, typeof(Sprite), true);         }         EditorGUILayout.EndScrollView();     }     void SearchImage()     {         list.Clear();         this.Search();         this.Repaint();     }     void Search()     {         string[] guids = AssetDatabase.FindAssets("t:Sprite", new string[] { "Assets/Game" });         int endIndex = guids.Length;         if(endIndex < 1)         {             this.ShowNotification(new GUIContent("No Sprite"));             return;         }         float nextTime = 0;         bool hasFind = false;         for(int i = 0; i < endIndex; i++)         {             var guid = guids[i];             var path = AssetDatabase.GUIDToAssetPath(guid);             var sprite = AssetDatabase.LoadAssetAtPath(path, typeof(Sprite)) as Sprite;             if (sprite.rect.width == width && sprite.rect.height == height)             {                 list.Add(sprite);                 hasFind = true;             }             if(nextTime <= Time.realtimeSinceStartup)             {                 bool cancel = EditorUtility.DisplayCancelableProgressBar("查找中", path, (float)i / endIndex);                 nextTime = Time.realtimeSinceStartup + 0.1f;                 if(cancel)                 {                     break;                 }             }         }         EditorUtility.ClearProgressBar();         if(!hasFind)         {             this.ShowNotification(new GUIContent("没有找到符合的Sprite"));         }     } }  

    Processed: 0.008, SQL: 9