using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System;
[System.Serializable]
public class SpriteUsage {
public string spriteName;
public int count;
public List<UISprite> sprites;
}
public class CheckAtlasUsage : MonoBehaviour {
public bool m_includeInactive = true;
public UIAtlas atlas;
UISprite[] sprites;
public List<SpriteUsage> usageList;
[ContextMenu("Clear")]
public void ClearSprites() {
usageList
= new List
<SpriteUsage
>(); }
[ContextMenu("Collect sprite usage")]
public void CollectSprites() {
sprites = this.gameObject.GetComponentsInChildren<UISprite>(m_includeInactive);
SpriteUsage item;
foreach (UISpriteData sd in atlas.spriteList) {
item
= new SpriteUsage
() { spriteName = sd.name,
count = 0,
sprites
= new List
<UISprite
>() };
foreach (UISprite s in sprites) {
if (s.spriteName == item.spriteName) {
item.count++;
item.sprites.Add(s);
}
}
usageList.Add(item);
}
}
[ContextMenu("Collect only used sprites")]
public void CollectSpritesUsed() {
sprites = this.gameObject.GetComponentsInChildren<UISprite>(m_includeInactive);
SpriteUsage item;
foreach (UISpriteData sd in atlas.spriteList) {
item
= new SpriteUsage
() { spriteName = sd.name,
count = 0,
sprites
= new List
<UISprite
>() };
foreach (UISprite s in sprites) {
if (s.spriteName == item.spriteName) {
item.count++;
item.sprites.Add(s);
}
}
if (item.count > 0)
usageList.Add(item);
else
item = null;
}
}
[ContextMenu("Collect ununsed sprites")]
public void CollectUnusedSprites() {
sprites = this.gameObject.GetComponentsInChildren<UISprite>(m_includeInactive);
SpriteUsage item;
foreach (UISpriteData sd in atlas.spriteList) {
item
= new SpriteUsage
() {spriteName
= sd
.name, count
= 0}; foreach (UISprite s in sprites)
if (s.spriteName == item.spriteName) item.count++;
if (item.count == 0) usageList.Add (item);
}
}
}