(二)Unity编辑器扩展之Hierarchy视图面板

1、拓展菜单

拓展Hierarchy面板,Create按钮下的菜单项都在GameObject下,代码如下;

  //Create按钮下的菜单项都在GameObject下
    [MenuItem("GameObject/My Create/cube", false, 0)]
    static void CreateCube()
    {
        GameObject.CreatePrimitive(PrimitiveType.Cube);
    }

效果
在这里插入图片描述

2、拓展布局

[InitializeOnLoadMethod]
    static void InitializeOnLoadMethod()
    {
        EditorApplication.hierarchyWindowItemOnGUI = delegate (int instanceID,
              Rect selectionRect)
          {
              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/Unity.png")))
                  {
                      Debug.LogFormat("click:{0}", Selection.activeObject.name);
                  }
              }
          };
    }

效果
在这里插入图片描述

3、重写菜单

  [MenuItem("Window/Test/yangfufeng")]
    static void Test()
    {

    }
    [MenuItem("Window/Test/yaogaoshang")]
    static void Teat1()
    {

    }
    [MenuItem("Window/Test/Unity/money")]
    static void Test2()
    {

    }
    [InitializeOnLoadMethod]
    static void StartInitializeOnLoadMethod()
    {
        EditorApplication.hierarchyWindowItemOnGUI += OnHierarchyGUI;
    }
    static void OnHierarchyGUI(int instanceID,Rect selectionRect)
    {
        if(Event.current!=null&&selectionRect.Contains(Event.current.mousePosition)&&Event.current.button==1&&
            Event.current.type<=EventType.MouseUp)
        {
            GameObject selectionGameObject = EditorUtility.InstanceIDToObject(instanceID) as GameObject;
            if(selectionGameObject)
            {
                Vector2 mousePosition = Event.current.mousePosition;
                EditorUtility.DisplayPopupMenu(new Rect(mousePosition.x, mousePosition.y, 0, 0), "Window/Test", null);
                Event.current.Use();
            }

        }
    }

效果:
在这里插入图片描述
重写创建image按钮

 [MenuItem("GameObject/UI/Image")]
    static void CreatImage()
    {
        if (Selection.activeTransform)
        {
            if (Selection.activeTransform.GetComponentInParent<Canvas>())
            {
                Image image = new GameObject("image").AddComponent<Image>();
                image.raycastTarget = false;
                image.transform.SetParent(Selection.activeTransform, false);
                Selection.activeTransform = image.transform;
            }
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值