Unity 3D 拓展编辑器 拓展 Hierarchy 视图

拓展菜单

using UnityEditor;
using UnityEngine;

public class HierarchyCreateMyTools
{
    [MenuItem("GameObject/拓展Hierarchy视图/创建Cube", false, 1)]
    static void CreateCube()
    {
        GameObject.CreatePrimitive(PrimitiveType.Cube);
    }
}

//----------------------------------------------------------

拓展布局

using UnityEditor;
using UnityEngine;

public class HierarchyLayoutMyTools
{
    [InitializeOnLoadMethod]
    static void EditorApplication_hierarchyWindowItemOnGUI()
    {
        EditorApplication.hierarchyWindowItemOnGUI = delegate (int instanceID, Rect selectionRect)
        {
            //--在hierarchy视图中选择一个资源
            if (Selection.activeObject && instanceID == Selection.activeObject.GetInstanceID())
            {
                //--设置拓展按钮区域
                float width = 50.0f;
                float height = 20.0f;
                selectionRect.x += (selectionRect.width - width);
                selectionRect.width = width;
                selectionRect.height = height;
                //--点击事件
                if (GUI.Button(selectionRect, "拓展按钮"))
                {
                    Debug.Log("click : " + Selection.activeObject.name);
                }
            }
        };
    }
}

//----------------------------------------------------------------

重写菜单

using UnityEditor;
using UnityEngine;

public class HierarchyOverrideMenuMyTools
{
    [MenuItem("Window/Test/重", false, 1)]
    static void Test0()
    {

    }
    [MenuItem("Window/Test/写", false, 1)]
    static void Test1()
    {

    }
    [MenuItem("Window/Test/菜", false, 1)]
    static void Test2()
    {

    }
    [MenuItem("Window/Test/单", false, 1)]
    static void Test3()
    {

    }
    [MenuItem("Window/Test/我的/001", false, 2)]
    static void Test5()
    {

    }
    [MenuItem("Window/Test/我的/002", false, 3)]
    static void Test6()
    {

    }
    [InitializeOnLoadMethod]
    static void EditorApplication_hierarchyWindowItemOnGUI()
    {
        EditorApplication.hierarchyWindowItemOnGUI += OnHierachyGUI;
    }

    static void OnHierachyGUI(int instanceID, Rect selectionRect)
    {
        if (Event.current != null
            && selectionRect.Contains(Event.current.mousePosition)
            && Event.current.button == 2
            && Event.current.type <= EventType.MouseUp)
        {
            GameObject selectedGameObject = EditorUtility.InstanceIDToObject(instanceID) as GameObject;
            if (selectedGameObject)
            {
                Vector2 mousePosition = Event.current.mousePosition;
                EditorUtility.DisplayPopupMenu(new Rect(mousePosition.x, mousePosition.y, 0, 0), "Window/Test", null);
                Event.current.Use();
            }
        }
    }
}

监听鼠标某个键(此处是中键)的点击事件,打开一个新的菜单窗口。

Event.current 来获取当前的事件。

//--------------------------------------------------------------

重写 创建 UI/Image

using UnityEditor;
using UnityEngine;
using UnityEngine.UI;

public class HierarchyOverrideCreateUIImageMyTools
{
    //--重写创建 UI/Image
    [MenuItem("GameObject/UI/Image")]
    static void CreateUIImage()
    {
        //--选中一个节点
        if (Selection.activeTransform)
        {
            //--该节点或其父节点含有Canvas画布组件
            if (Selection.activeTransform.GetComponentInParent<Canvas>())
            {
                Image image = new GameObject("Image").AddComponent<Image>();
                image.raycastTarget = false;//--自定义实现--raycastTarget默认不勾选
                image.transform.SetParent(Selection.activeTransform, false);
                //--设置选中状态
                Selection.activeTransform = image.transform;
            }
        }
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值