untiy Hierarchy面板的Node结点标识方便开发

/*
 * http://www.manew.com/thread-102160-1-1.html 游戏蛮牛
 */
 #if UNITY_EDITOR
using UnityEngine;
using UnityEditor;
using System;

[InitializeOnLoad] //Unity启动的时候执行编辑器的脚本 需要静态的构造函数

static class DrawIcon
{
    static Texture2D icon;
    //静态的构造函数
    static DrawIcon()
    {
        callback();
    }

    private static void callback()
    {
        icon =  AssetDatabase.LoadAssetAtPath<Texture2D>(@"Assets/AssetFolder/GUIAsset/Textures/ChatFace/015.png");


        EditorApplication.hierarchyWindowItemOnGUI = (EditorApplication.HierarchyWindowItemCallback)Delegate.Combine(EditorApplication.hierarchyWindowItemOnGUI, 
            new EditorApplication.HierarchyWindowItemCallback(HierarchyWindowItemOnGUI));
        /*EditorApplication.hierarchyWindowItemOnGUI这对象用的是
        * EditorApplication.HierarchyWindowItemCallback委托的结构
        */
        //添加委托
        EditorApplication.hierarchyWindowItemOnGUI += HierarchyIcon;
    }
    private static void HierarchyIcon(int instanceID, Rect selectionRect)
    {
        Rect r = new Rect(selectionRect);
      
        r.x = 5.0f;
       
        //调整大小的
        r.width = 20;
        //EditorUtility.InstanceIDToObject是通过一个id来变换成一个GameObj
        GameObject go = EditorUtility.InstanceIDToObject(instanceID) as GameObject;
        //  && 后面就是选择那一个物体前面有图标的   我的是挂了IconMark脚本的都会绘制上图标
        if (go != null && go.GetComponent<IConMark>() != null)
        {
            GUI.Label(r, icon);
        }
        else if(go != null && go.GetComponent<UIWindowBehaviour>() != null)
        {
            GUI.Label(r, "wnd");
        }
       
    }
    private static void HierarchyWindowItemOnGUI(int instanceID, Rect selectionRect)
    {
        GameObject gameObject = EditorUtility.InstanceIDToObject(instanceID) as GameObject;
        if (gameObject != null)
        {
            var trans = gameObject.GetComponentsInChildren<Transform>(true);

            Rect position = new Rect(selectionRect);
            position.x = position.width + (selectionRect.x - 40);
            position.width = 40;
            position.height = 16f;
            GUI.Label(position, trans.Length.ToString());
        }
    }
}
#endif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity Hierarchy插件是一款用于Unity游戏引擎的插件,主要用于帮助开发者更方便地管理场景中的游戏对象。 UnityHierarchy面板是用于展示场景中的游戏对象层级结构的重要工具。它以树状结构显示游戏对象的层级关系,开发者可以通过Hierarchy面板选择、查找、操作游戏对象。 然而,Unity自带的Hierarchy面板功能有限,不够灵活和高效。这时,Unity Hierarchy插件就发挥了作用。它提供了一些额外的功能和工具,帮助开发者更高效地管理游戏对象。 Unity Hierarchy插件的功能包括: 1. 标签筛选:可以根据游戏对象的标签来快速筛选和定位,节省了查找时间。 2. 属性过滤:可以根据游戏对象的属性进行过滤,例如名称、标签、层级、标记等。这样可以快速找到特定的游戏对象。 3. 自定义排序:可以按照自定义规则对游戏对象进行排序,便于管理大量的游戏对象。 4. 批量操作:可以同时对多个游戏对象进行相同的操作,比如启用/禁用、隐藏/显示、删除等。 5. 层次结构可视化:可以通过不同的图标、颜色和缩进来可视化展示游戏对象的层级结构,使开发者更清晰地了解场景中的对象关系。 总之,Unity Hierarchy插件是一款强大的工具,可以极大地提升开发者的工作效率和舒适度。它的各种功能帮助开发者更轻松地管理和操作游戏对象,使得开发过程更加高效和愉快。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值