基本上每个项目都会有自己的一套基础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);//在鼠标的位置弹出菜单,菜单的路径 } } }