拓展编辑器(七)_拓展布局

拓展布局

  Hierarchy视图中,同样可以对布局进行拓展。

  

using UnityEngine;
using UnityEditor;

public class 拓展布局1
{
    [InitializeOnLoadMethod]
    static void InitializeOnLoadMethod()
    {
        EditorApplication.hierarchyWindowItemOnGUI = delegate (int instanceID,
              Rect selectionRect)
          {
            //在Herarchy视图中选择一个资源
            if (Selection.activeObject && instanceID == Selection.activeObject.GetInstanceID())
              {
                  float width = 50f;
                  float height = 20f;
                  selectionRect.x += (selectionRect.width - width);
                  selectionRect.width = width;
                  selectionRect.height = height;
                  //点击事件
                  if (GUI.Button(selectionRect, AssetDatabase.LoadAssetAtPath<Texture>("Assets/Image.png")))
                  {
                      Debug.LogFormat("click:{0}", Selection.activeObject.name);
                  }
              }
          };
    } 
}

  在代码中实现EditorApplication.hierarchyWindowItemOnGUI委托,就可以重写Hierarchy视图了。这里使用了GUI。Button来绘制自定义按钮,点击可以监听事件。(GHI的种类比较丰富,此外,我们还可以拓展其它显示元素),同时还用了之前介绍的AssetDatabase AP从Assets文件夹中加载了一张图片。

  Selection.activeObject.GetInstanceID()方法可以获得物体的InstanceID,一个预制体与它实例化出的物体之间,InstanceID都是不一样的,都是唯一的。

效果如图所示:

点击图标后,在Console窗口中输出这个游戏对象。它的工作原理就是监听EditorAppliaction.hierarchyWindowItemOnGUI渲染回调。

posted @ 2018-10-28 22:56  むふむふ  阅读(263)  评论(0编辑  收藏  举报