UnityEditor使用筆記 -- 自定義Hierarchy面板的右鍵菜單欄


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

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM