UnityEditor扩展:自定义Hierarchy图标

能上代码就不BB了。 参考自:http://answers.unity3d.com/questions/431952/how-to-show-an-icon-in-hierarchy-view.html

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

[InitializeOnLoad]
class HierarchyIconDisplay
{
    static Texture2D texture;
    static List<int> markedObjects;

    static HierarchyIconDisplay()
    {
        //替换自己的图片
        texture = AssetDatabase.LoadAssetAtPath("Assets/Resources/radioButton.png", typeof(Texture2D)) as Texture2D;
        EditorApplication.update += UpdateCB;
        EditorApplication.hierarchyWindowItemOnGUI += HierarchyItemCB;
    }

    static void UpdateCB()
    {
        GameObject[] go = Object.FindObjectsOfType(typeof(GameObject)) as GameObject[];
        markedObjects = new List<int>();
        foreach (GameObject g in go)
        {
            //自定义逻辑
            if (!string.IsNullOrEmpty(g.tag)&&g.tag == "UIProperty")
                markedObjects.Add(g.GetInstanceID());
        }

    }

    static void HierarchyItemCB(int instanceID, Rect selectionRect)
    {
        Rect r = new Rect(selectionRect);
        //我用的Unity 5.6.0f3版本,我这里需要再加一个r.x才能保持一致,和Unity论坛里面的答案不一样,可能是新旧版本导致的不同吧。
        r.x = r.x + r.width - 16;
        r.width = 16;
        if (markedObjects.Contains(instanceID))
        {
            //可以替换成GUI.Button等。。。
            GUI.Label(r, texture);
        }
    }

}
最近的文章

c#的优先队列实现

如果不考虑顺序问题,可以使用那个折半插入,来减少插入排序的时间复杂度{% highlight c %}using System;using System.Collections;using System.Collections.Generic;public class PriorityQueue<T, P> where P : IComparable<P>{ private List<KeyValuePair<T, P» items = new L...…

继续阅读
更早的文章

lua学习笔记(二)

上一个学习笔记都是记录了一些基本案例,这个学习笔记要记录一些自己遇到的问题 lua不支持函数重载! wtf 引用关系,这里的test方法,不需要return a function test(f) f.b=3 f.c=4enda={}a.b=1a.c=2print(a.b,a.c)test(a)print(a.b,a.c) ——– Output —— 1 2 3 4 lua的操作符:http://lua-user...…

继续阅读