程序员开发实例大全宝库

网站首页 > 编程文章 正文

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

zazugpt 2024-10-24 19:25:24 编程文章 19 ℃ 0 评论

我们想要查看场景中物体的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

Unity技术交流 微信公众号 UnityAsk,QQ群:891555732

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表