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