美文网首页UnityEditor随笔-生活工作点滴
Unity3D 在Hierarchy窗口中显示物体所属Layer

Unity3D 在Hierarchy窗口中显示物体所属Layer

作者: UnityAsk | 来源:发表于2019-07-10 19:10 被阅读133次

    我们想要查看场景中物体的Layer时,需要在Hierarchy窗口中点击GameObject,然后才能在Inspector中显示Layer等相关属性,

    当场景物体多的时候,这个操作还是比较麻烦的。那么有没有一种方式可以方便直观查看所属Layer呢。

    今天我们就利用EditorApplication.hierarchyWindowItemOnGUI 这个接口来实现直接在Hierarchy窗口中显示物体Layer。

    先来看下最终效果,Hierarchy窗口中,GameObject右侧的名称就是该物体所在的Layer名称。

    实现如下:

    using UnityEditor;
    using UnityEngine;
    
    // <summary>
    /// Hierarchy Window Layer Info
    /// http://diegogiacomelli.com.br/unitytips-hierarchy-window-layer-info/
    /// </summary>
    [InitializeOnLoad]
    public static class HierarchyWindowLayerInfo
    {
        static readonly int IgnoreLayer = LayerMask.NameToLayer("Default");
    
        static readonly GUIStyle _style = new GUIStyle()
        {
            fontSize = 9,
            alignment = TextAnchor.MiddleRight
        };
    
        static HierarchyWindowLayerInfo()
        {
            EditorApplication.hierarchyWindowItemOnGUI += HandleHierarchyWindowItemOnGUI;
        }
    
        static void HandleHierarchyWindowItemOnGUI(int instanceID, Rect selectionRect)
        {
            var gameObject = EditorUtility.InstanceIDToObject(instanceID) as GameObject;
    
            if (gameObject != null)
            {
                EditorGUI.LabelField(selectionRect, LayerMask.LayerToName(gameObject.layer), _style);
            }
        }
    }
    
    

    静态类添加[InitializeOnLoad]属性,在Unity编辑器启动的时候就可以执行 同名静态构造函数static HierarchyWindowLayerInfo()

    EditorApplication.hierarchyWindowItemOnGUI 接口有两个参数,第一个为object的 InstanceId,第二个为对应的显示区域。

    Delegate to be called for every visible list item in the HierarchyWindow on every OnGUI event.

    hierarchy窗口中的每个可见物体的OnGUI事件触发时,这个函数都会被调用。

    通过这个接口,我们可以实现其他很多定制需求。

    官方文档 https://docs.unity3d.com/ScriptReference/EditorApplication.HierarchyWindowItemCallback.html

    相关文章

      网友评论

        本文标题:Unity3D 在Hierarchy窗口中显示物体所属Layer

        本文链接:https://www.haomeiwen.com/subject/kdxhkctx.html