基本上每個項目都會有自己的一套基礎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);//在鼠標的位置彈出菜單,菜單的路徑 } } }
