Unity编辑器扩展

扩展Hierarchy

Hierarchy视图中出现的都是游戏对象,这些对象之间同样具有一定的关联关系。我们可以用树状结构来表示游戏对象之间复杂的父子关系。Hierarchy视图中的游戏对象会通过摄像机最终投影在发布的游戏中。

拓展菜单

using UnityEditor;
using UnityEngine;

public class MyCreate 
{
    [MenuItem("GameObject/My Create/Cube", false, 0)]
    static void CreateCube()
    {
        GameObject.CreatePrimitive(PrimitiveType.Cube);
    }
}

拓展布局

选择不同的游戏对象后,在右侧可根据EditorGUI拓展出一组按钮,点击Unity图标按钮后,在Console窗口中输入这个游戏对象。它的工作原理就是监听EditorApplication.hierarchyWindowItemOnGuI渲染回调。

using UnityEditor;
using UnityEngine;

public class MyCreate  : Editor
{

    [InitializeOnLoadMethod]
    private static void InitializeOnLoadMethod()
    {
        EditorApplication.hierarchyWindowItemOnGUI = delegate(int id, Rect rect)
        {
            if (Selection.activeObject && id == Selection.activeGameObject.GetInstanceID())
            {
                float width = 50f;
                float height = 15f;
                rect.x += (rect.width - width);
                rect.width = width;
                rect.height = height;
                if (GUI.Button(rect, "点击"))
                {
                    Debug.LogFormat("click : {0}", Selection.activeObject.name);
                }
            }
        };
    }
}
上一篇
下一篇