UIUseImgWindow
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的更多相关文章
随机推荐
- jdbc --例子7
package cn.kitty.o1; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLE ...
- 新建web项目myeclipse基本设置
1. General --> Workspace --> UTF-82. General --> Editors --> Associations --> JSP --& ...
- Maven项目启动报错:java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
1.场景 1.1.先确认pom.xml文件已添加mysql依赖: <dependency> <groupId>mysql</groupId> < ...
- 2019/3/26 wen 数组
- 开启redis-server提示 # Creating Server TCP listening socket *:6379: bind: Address already in use--解决方法
在bin目录中开启Redis服务器,完整提示如下: 3496:C 25 Apr 00:56:48.717 # Warning: no config file specified, using the ...
- JDK源码之LinkedHashSet
LinkedHashSet是HashSet和LinkList结合产生的集合,集合中的元素互不相同,且元素采用双向链表进行连接. 1.定义 LinkedHashSet继承了HashSet并且实现了Set ...
- jQuery常用插件与jQuery使用validation插件实现表单验证实例
jQuery常用插件 1,jQuery特别容易扩展,开发者可以基于jQuery开发一些扩展动能 2,插件:http://plugins.jquery.com 3,超厉害的插件:validation . ...
- bzoj4720 / P1850 换教室(Floyd+期望dp)
P1850 换教室 先用Floyd把最短路处理一遍,接下来就是重头戏了 用 f [ i ][ j ][ 0/1 ] 表示在第 i 个时间段,发出了 j 次申请(注意不一定成功),并且在这个时间段是否( ...
- Shell批量启动、关闭tomcat
批量启动tomcat脚本,配置NUM可控制启动数量 #!/bin/bash #identifier CLUSTER_HOME=/opt/cluster-tomcat TNAME=tomcat-- TP ...
- Linux 基础知识选择/填空
选择题 1. 返回调用进程的进程标识号的系统函数是________. A. getpid B. getpgrp C. getppid D. setpid ##A 2. 关于文件系统的安装和卸载,下面描 ...