using System.Collections.Generic;
using System.Collections;
using UnityEditor;
using UnityEngine.UI;
namespace EditorTool
{
using UnityEngine;
[InitializeOnLoad]
class HierarchyTool
{
private static Hashtable colorMap;
//预制颜色表
private static List<Color> preColors;
static HierarchyTool()
{
colorMap = new Hashtable();
preColors = new List<Color>();
preColors.Add(new Color(255, 0, 255, 0.5f));
preColors.Add(new Color(0, 255, 255, 0.5f));
preColors.Add(new Color(255, 255, 0, 0.5f));
preColors.Add(new Color(0, 255, 0, 0.5f));
preColors.Add(new Color(255, 0, 0, 0.5f));
preColors.Add(new Color(0, 0, 255, 0.5f));
preColors.Add(new Color(255, 51, 153, 0.5f));
preColors.Add(new Color(204, 255, 0, 0.5f));
preColors.Add(new Color(255, 102, 0, 0.5f));
preColors.Add(new Color(153, 102, 0, 0.5f));
preColors.Add(new Color(51, 153, 153, 0.5f));
preColors.Add(new Color(152, 102, 153, 0.5f));
EditorApplication.hierarchyWindowItemOnGUI += hierarchWindowOnGUI;
}
private static void hierarchWindowOnGUI(int instanceID, Rect selectionRect)
{
Rect rect = new Rect(selectionRect);
rect.x = rect.x + rect.width - 19;
rect.width = 18;
GameObject go = EditorUtility.InstanceIDToObject(instanceID) as GameObject;
if (go == null) return;
//可见性控制
go.SetActive(GUI.Toggle(rect, go.activeSelf, string.Empty));
Image image = go.GetComponent<Image>();
if (!image || !image.sprite) return;
string path = AssetDatabase.GetAssetPath(image.sprite);
int index = path.LastIndexOf("/");
if(index>0)
{
string sign = "";
Color color = Color.gray;
string key = path.Substring(0, index);
index = key.LastIndexOf("/");
if (index > 0)
sign = key.Substring(index+1).Replace("Atlas_","");
if (colorMap.Contains(key))
{
color = (Color)colorMap[key];
}
else
{
if (preColors.Count > 0)
{
color = preColors[0]; // new Color(Random.value, Random.value, Random.value, 0.5f);
preColors.RemoveAt(0);
}
else
{
color = new Color(Random.value, Random.value, Random.value, 0.5f);
}
colorMap.Add(key, color);
}
GUIContent con = new GUIContent(sign);
rect.width = GUI.skin.GetStyle("Label").CalcSize(con).x;
rect.x -= rect.width;
Texture2D tex = EditorGUIUtility.whiteTexture;
GUI.color = color;
GUI.DrawTexture(rect, tex);
GUI.color = Color.white;
GUI.Label(rect, con);
}
}
}
}
unity-Hierarchy上显示图集的名称
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 在图集中的效果也一样,一个清晰一个模糊,最后发现是Icon2使用了ETC2的压缩方式,而Icon1是RGBA32,...
- 今天升级Unity5.5.0之后 打开以前的Unity项目(以前用的5.3.5),突然发现Scane里面Image...
- 图集的好处: 1.减少draw call: 多张图片需要多次draw call,合成了一张大图则只需要一次draw...
- 因为公司需要,所以就尝试使用ngui ,使用了几天发现貌似还不错,里面对图集的加载方式还时真的有意思。 废话不多说...