由于開發(fā)項目,某個Scene場景內(nèi)會有很多的靜態(tài)物體。我們在Hierarchy窗口中選中后,雖然有三維坐標顯示在物體上,但是也很難分辨。
于是unity提供了給編輯物體設(shè)置icon。
?這些icon大家都很熟悉了吧。
問題來了,如果是一個兩個物體,我手動設(shè)置下沒問題。如果幾十個,或者更多呢?
“寫代碼?。 庇行┩瑢W都會搶答了。
于是我在網(wǎng)上百度下,有了以下的代碼:
private static GUIContent[] labelIcons;
private static GUIContent[] largeIcons;
private static GUIContent[] GetTextures(string basename, string postFix, int startIndex, int count)
{
GUIContent[] guiContentArray = new GUIContent[count];
var t = typeof(EditorGUIUtility);
var mi = t.GetMethod("IconContent", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static
,null, new Type[] { typeof(string)}, null);
for (int index = 0; index < count; ++index)
{
guiContentArray[index] = mi.Invoke(null, new object[] { basename + (object)(startIndex + index) + postFix }) as GUIContent;
}
return guiContentArray;
}
private static void SetIcon(GameObject go, LabelIcon icon)
{
if (labelIcons == null)
{
labelIcons = GetTextures("sv_label_", string.Empty, 0, 8);
}
SetIcon(go, labelIcons[(int)icon].image as Texture2D);
}
private static void SetIcon(GameObject go, Icon icon)
{
if (largeIcons == null)
{
labelIcons = GetTextures("sv_icon_dot", "_pix16_gizmo", 0, 16);
}
SetIcon(go, largeIcons[(int)icon].image as Texture2D);
}
private static void SetIcon(GameObject go, Texture2D texture)
{
var ty = typeof(EditorGUIUtility);
var mi = ty.GetMethod("SetIconForObject", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static);
mi.Invoke(null, new object[] {go, texture });
}
/// <summary>
/// Label類型icon 顯示文字的
/// </summary>
public enum LabelIcon
{
Gray = 0,
Blue,
Teal,
Green,
Yellow,
Orange,
Red,
Purple
}
/// <summary>
/// 其他icon不顯示文字
/// </summary>
public enum Icon
{
CircleGray = 0,
CircleBlue,
CircleTeal,
CircleGreen,
CircleYellow,
CircleOrange,
CircleRed,
CirclePurple,
DiamondGray,
DiamondBlue,
DiamondTeal,
DiamondGreen,
DiamondYellow,
DiamondOrange,
DiamondRed,
DiamondPurple
}
是不是很牛掰!后來在大神的指導下,就用了以下兩句:
var iconContent = EditorGUIUtility.IconContent("sv_icon_dot14_pix16_gizmo");
EditorGUIUtility.SetIconForObject(node_start, (Texture2D)iconContent.image);
就搞定了。百度害人?。?/p>
總結(jié)下,前半部分的代碼適合早期的unity版本。那兩句的代碼,適合新版本的unity。
提供下?EditorGUIUtility.IconContent方法的可用參數(shù)字符串(卡布斯尼):文章來源:http://www.zghlxwxcb.cn/news/detail-408815.html
Shttps://github.com/halak/unity-editor-icons文章來源地址http://www.zghlxwxcb.cn/news/detail-408815.html
到了這里,關(guān)于【無標題】Unity隨手記——給Scene窗口內(nèi)的物體設(shè)置SelectIcon的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!