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"));
}
}
}
查找图片Tools
最新推荐文章于 2024-08-27 22:00:00 发布