添加方法到相應(yīng)的菜單欄
using UnityEngine;
using UnityEditor;
public class Tools {
[MenuItem("Tools/Test")]//通過MenuItem[“路徑”]添加到相應(yīng)菜單欄
static void Test() {//編輯器類的方法必需是static修飾,方法名是唯一的。
Debug.Log("Test");
}
}
編輯器中的分組
[MenuItem("Tools/Show Info",false,1)]
//其中有三個參數(shù),第一個為路徑,第二個為是否啟用菜單項(xiàng),第三個為優(yōu)先級
** 系統(tǒng)默認(rèn)的優(yōu)先級是1000
分組的條件是第三個參數(shù)相差11,這個數(shù)值是為變的,固定要相差這么多
第二個參數(shù)的使用:
//TestDeleteBool方法為驗(yàn)證TestDelete方法是否可以運(yùn)行。
//方法名不同,第二個參數(shù)要為true,其它要保持一致辭
[MenuItem("GameObject/Test Delete", true, 10)]
static bool TestDeleteBool()
{
if (Selection.objects.Length > 0)
{
return true;
}
else
{
return false;
}
}
[MenuItem("GameObject/Test Delete", false, 10)]
static void TestDelete() {
foreach (Object o in Selection.objects)
{
Undo.DestroyObjectImmediate(o);
}
}
添加方法到組件的右鍵菜單欄
using UnityEngine;
using UnityEditor;
public class PlayerEditor {
[MenuItem("CONTEXT/Rigidbody/Clear")]//CONTEXT/加組件名/加按扭名
static void ClearMassAndGravity(MenuCommand cmd)
{//MenuCommand為當(dāng)前操作的組件
Rigidbody rgd = cmd.context as Rigidbody;
rgd.mass = 0;//更改組件上的變量值
rgd.useGravity = false;
}
}
Selection(選擇)類的應(yīng)用
[MenuItem("Tools/Show Info",false,1)]
static void ShowInfo() {
Debug.Log(Selection.activeGameObject.name);//多選時只會得到第一個選擇的物體(只在Hierarchy面板中有效)
}
具體參見API
撤消的類Undo
[MenuItem("GameObject/Test Delete", false, 10)]
static void TestDelete() {
foreach (Object o in Selection.objects)
{
Undo.DestroyObjectImmediate(o);//利用Undo進(jìn)行刪除操作是可以撤消的
}
}
給菜單添加快捷鍵
%代表Ctrl,#代表Shift,&代表alt
[MenuItem("Tools/Test t", false, 10)]//純字母加字母就可以添加快捷鍵
[MenuItem("Tools/Test %t", false, 10)]//組合鍵加字母添加快捷鍵
關(guān)于ContextMenu和ContextMenuItem的使用
ContextMenu非UnityEditor下,直接寫在非系統(tǒng)組件上的右鍵按扭。
[ContextMenu("SetColor")]//傳入一個方法名
void SetColor() {
flashColour = Color.green;
}
ContextMenuItem在腳本中給變量添加右鍵菜單按扭
[ContextMenuItem("AddHp", "AddHp")]//第一個參數(shù)為按扭名,第二個為方法名,方法一定要存在
public int startingHealth = 100;
void AddHp()
{
startingHealth += 20;
}
創(chuàng)建窗口
創(chuàng)建窗口要繼承ScriptableWizard
ScriptableWizard.DisplayWizard<Windows>("修改窗口","Change Value");//第一個參數(shù)為標(biāo)題,第二個參數(shù)為按扭名稱
添加檢測方法
//檢測Create按扭的點(diǎn)擊,方法名必須是OnWizardCreate
void OnWizardCreate() {
Debug.Log("Done");
}