基本上每个项目都会有自己的一套基础UI,比如button , panel , render , 或者是做图集优化的Textrue 和 image 采用不用的封装图片组件来分开处理。
这些基础的东西在多人开发的过程中,使用的非常频繁,为了提高开发效率,几乎每个项目都会把这些基础组件做成一个类似Unity自带一样的效果,右键菜单栏一键创建XXX组件
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
public class Test2
{
//注册到Assets目录下
[MenuItem("Assets/项目封装的UI/创建一个Cube",false,8)]
public static void MyTest2()
{
// GameObject.Instantiate()
//实际的项目中 资源可能放在别的路径,根据项目自行选择加载方式和路径
GameObject obj = Resources.Load<GameObject>("cube");
//选中了几个就在这几个物体的子目录下创建相应的东西
for (int i = 0; i < Selection.transforms.Length; i++)
{
GameObject newObj = GameObject.Instantiate(obj);
newObj.transform.SetParent(Selection.transforms[i]);
newObj.name = obj.name+i;
}
}
[InitializeOnLoadMethod]
static void StartInitializeOnLoadMethod()
{
EditorApplication.hierarchyWindowItemOnGUI += OnHierarchyGUI;//hierarchy面板绘制GUI的委托,可以自己添加gui委托
}
static void OnHierarchyGUI(int instanceID, Rect selectionRect)//Unity hierarchy绘制的时候传递的2个参数
{
if (Event.current != null && Event.current.button == 1 && Event.current.type <= EventType.MouseUp) //右键,点击向上
{
Vector2 mousePosition = Event.current.mousePosition;
EditorUtility.DisplayPopupMenu(new Rect(mousePosition.x, mousePosition.y, 0, 0), "Assets/",null);//在鼠标的位置弹出菜单,菜单的路径
}
}
}

UnityEditor使用笔记 -- 自定义Hierarchy面板的右键菜单栏
原文:https://www.cnblogs.com/leixuan111/p/12229303.html