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

namespace Daemo
{
class UIUseImgWindow : EditorWindow
{
[MenuItem("Tools/UI RES/UI Use Images %#Q")]
private static void ShowWindow()
{
UIUseImgWindow cw = (UIUseImgWindow)EditorWindow.GetWindow(typeof(UIUseImgWindow));
cw.minSize = new Vector2(500, 300);
cw.title = "UIUseImg";
}
public int showType = 0;
public void Awake()
{
this.UpdateMsg();
}

private void UpdateMsg()
{
uiUseImages.Clear();
useImageMsg = string.Empty;
UnityEngine.Object[] ps = GetSelectedPrefabs();
for (int i = 0; i < ps.Length; i++)
{
if (i == 0)
{
useImageMsg += "选中Prefabs:";
}
useImageMsg += (ps[i] as GameObject).name + ",";
Image[] images = (ps[i] as GameObject).GetComponentsInChildren<Image>(true);
for (int j = 0; j < images.Length; j++)
{
if (images[j].sprite != null)
{
Texture2D tt = images[j].sprite.texture;
if (tt != null)
{
if (uiUseImages.IndexOf(tt) < 0)
{
uiUseImages.Add(tt);
}
}
}
}

}
if (uiUseImages.Count > 0) {
useImageMsg = useImageMsg.Substring(0, useImageMsg.Length - 1);
useImageMsg += "使用图片数量" + uiUseImages.Count;
}
}
public void UpdateSceneMsg() {
uiUseImages.Clear();
useImageMsg = string.Empty;
UnityEngine.Object[] ps = UnityEditor.Selection.gameObjects;
for (int i = 0; i < ps.Length; i++)
{
if (i == 0)
{
useImageMsg += "选中Prefabs:";
}
useImageMsg += (ps[i] as GameObject).name + ",";
Image[] images = (ps[i] as GameObject).GetComponentsInChildren<Image>(true);
for (int j = 0; j < images.Length; j++)
{
if (images[j].sprite != null)
{
Texture2D tt = images[j].sprite.texture;
if (tt != null)
{
if (uiUseImages.IndexOf(tt) < 0)
{
uiUseImages.Add(tt);
}
}
}
}

}
if (uiUseImages.Count > 0)
{
useImageMsg = useImageMsg.Substring(0, useImageMsg.Length - 1);
useImageMsg += "使用图片数量" + uiUseImages.Count;
}

}
private List<Texture2D> uiUseImages = new List<Texture2D>();
private Vector2 scrollPos ;
private Texture2D img = null;
private string useImageMsg = string.Empty;
private void OnGUI()
{
GUILayout.Space(10);
if (GUILayout.Button("更新"))
{
this.UpdateMsg();
}
GUILayout.Space(10);
if (GUILayout.Button("更新ACTIVE"))
{
this.UpdateSceneMsg();
}
GUILayout.Space(10);
GUILayout.Label("功能说明:展示选中UI Prefab组所有使用过的Img");
GUILayout.Space(10);
GUILayout.Label("使用说明:选中需要检查的UI Prefab组点击更新即可。");
GUILayout.Space(10);
GUILayout.Label(useImageMsg);
GUILayout.Space(10);
EditorGUILayout.BeginHorizontal();
scrollPos =
EditorGUILayout.BeginScrollView(scrollPos, GUILayout.Width(300), GUILayout.Height(400));
for (int i = 0; i < uiUseImages.Count; i++)
{
img = uiUseImages[i];
img = (Texture2D)EditorGUILayout.ObjectField(img, typeof(Texture2D), false, GUILayout.MinWidth(200f));
}
EditorGUILayout.EndScrollView();

EditorGUILayout.EndHorizontal();

}
private UnityEngine.Object[] GetSelectedPrefabs()
{
return Selection.GetFiltered(typeof(GameObject), SelectionMode.DeepAssets);
}
}

}

UIUseImgWindow的更多相关文章

随机推荐

  1. SSM整合Mybatis-Spring

    mybatis -Spring 整合 cn.kitty.bean public class Book { private int bookid; private String bookname; pr ...

  2. Linux环境nginx的安装

    安装Nginx前需要编译环境和库文件支持: 1.安装make: yum -y install openssl openssl-devel yum -y install gcc automake aut ...

  3. linux+apache+nginx实现,反向代理动静分离

    在我们开发的过程中,一定会遇到,负载均衡方面的问题.下面我们,做一个小例子:使用nginx+apache实现反向代理,动静分离. 这里apache.php.nginx的安装就不做赘述了,不懂的朋友可以 ...

  4. Prometheus监控学习笔记之Prometheus监控简介

    0x00 Prometheus容器监控解决方案 Prometheus(普罗米修斯)是一个开源系统监控和警报工具,最初是在SoundCloud建立的.它是一个独立的开放源码项目,并且独立于任何公司.不同 ...

  5. mysql用户的增删与密码丢失问题

    为root用户设置初始密码 mysqladmin -u root password 密码(单实例) mysqladmin -u root password 密码 -S /data/3306/mysql ...

  6. c语言cgi笔记

    直接输出接收的数据 #include <stdio.h>#include <stdlib.h>main(){int i,n;printf ("Content-type ...

  7. ldap服务备份与恢复

    备份: cat ldap_backup.sh #!/bin/bash/usr/sbin/slapcat >/S3/openldap/openldap_backup_`date -d " ...

  8. ldap集成confluence

    confluence ldap配置跟jira ldap集成一样,请参考:https://www.cnblogs.com/imcati/p/9378668.html

  9. 20145212 罗天晨 MSF基础应用

    一.对exploit,payload,encode的理解 exploit是利用系统漏洞,相当于一个动态的过程. payload是攻击载荷,用于实现对漏洞的攻击,是实现漏洞攻击最核心的代码. encod ...

  10. IO流-基础

    //创建输出流对象 FileWriter fw = new FileWriter("d:\\a.txt"); /* * 创建输出流对象做了哪些事情: * A:调用系统资源创建了一个 ...