本文部分內(nèi)容參考自這里
在這篇文章中提到過弥奸,放在Editor目錄下的資源和文件發(fā)布時都不會被打包,里面的腳本只會在編輯器中被使用。很多第三方插件擴展了編輯器的功能唐片,所以都會有一個Editor文件夾莱预,這里我想來簡單了解一下Unity Editor是如何擴展的柠掂。
Editor文件夾中的腳本是不允許掛在GameObject上的,因為在Editor目錄下的都被默認(rèn)為Editor Script.
編寫Editor Script的時候不要忘記using UnityEditor.
假設(shè)你要為Editor增加快捷打包AssetBundle的功能
public class AssetBundleTry : MonoBehaviour
{
[MenuItem("AssetBundle/CreateAssetBundle",false,1)]
static public void CreateAssetBundle()
{
BuildPipeline.BuildAssetBundles("Assets/AssetBundles", BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows);
Debug.Log("Create");
}
[MenuItem("AssetBundle/CreateAssetBundle",true)]
static public bool CanCreateAssetBundle()
{
return true;//如果 return false這個選項就是灰的
}
}
首先要注意使用MenuItem的方法必須是Static的
MenuItem有三個參數(shù)依沮,第一個參數(shù)是菜單路徑涯贞,用/分割,第二個參數(shù)指明這個函數(shù)是否為驗證函數(shù)危喉,驗證函數(shù)為真時這個菜單選項是可選的宋渔,否則是灰的,第三個參數(shù)是優(yōu)先級,越小越在上面姥饰,而且相鄰菜單優(yōu)先級差距11以上則會被分組傻谁,即菜單中多一個分隔線。默認(rèn)值為1000
可以為菜單添加快捷鍵
?%— — 在 Windows 上的 CTRL / CMDOSX 上
?#— — Shift
?&— — Alt 鍵
?LEFT/RIGHT/UP/DOWN---—Arrow箭頭鍵
?F1......F2 — — F鍵
?HOME, END,PGUP, PGDN
[MenuItem("AssetBundle/CreateAssetBundle1 #&a", false, 70)]
static public void CreateAssetBundle1()
{
Debug.Log("Create 1");
}
上面這個例子菜單選項上面就會寫快捷鍵是CTRL+SHIFT+A列粪,如果是單獨按鍵的快捷鍵审磁,注意添加下劃線,比圖“AssetBundle/CreateAssetBundle1 _a ”表示按A觸發(fā)該功能岂座。
類似的态蒂,也可以在右鍵Hierarchy以及Asset的彈出菜單中添加自定義的菜單項,只需
[MenuItem("GameObject/Test2", false)] //Gameobject菜單的選項和右鍵Hierarchy的選項是一樣的
public static void PasteTRValue()
{
Debug.Log("Test2");
}
[MenuItem("Assets/Test3", false)]
public static void Test3()
{
Debug.Log("Test3");
}
如果想在Inspector窗口中添加菜單费什,需要指定在某特定的Component添加“
[MenuItem("CONTEXT/ComponentName/ItemName")”钾恢,比如像要右鍵transform組件的時候添加菜單,則需
[MenuItem("CONTEXT/Transform/Test4")]
public static void Test4()
{
Debug.Log("Test4");
}
以上代碼給Transform腳本添加了一個右鍵菜單。想要給所有腳本都添加瘩蚪,可以在Object上添加菜單泉懦。