1. 程式人生 > >unity指令碼編輯器(一)

unity指令碼編輯器(一)

在選單欄新增按鈕

新建指令碼,無需繼承mono,start update方法,引用名稱空間usingUnityEditor;

定義按鈕    

選單欄顯示名稱/按鈕名稱, MenuItem可以在任何指令碼內使用

 [MenuItem ("Testbtn/test/test1")]
        static void test0()
{                                             
           Debug.Log("測試0,,");
  }	
 [MenuItem("Testbtn/test/test2")] //設定一個按鈕都要新增對應的方法
       static void test1() //名字不能相同,以上兩種設定了同意父層級test下的兩個按鈕
        {
           Debug.Log("測試2,,");
        }

我們發現unity會對按鈕有分類,用橫線分開,自己設定的方式如下:

      [MenuItem("Testbtn/test/test2", false,1)]  

第三個引數為顯示順序,值越小就越靠上,當相鄰兩個按鈕的值相差大於11就會分類,用橫線分開

 在元件右鍵內新增按鈕

     [MenuItem("CONTEXT/test/UnLog",false,1)]//context大寫,元件名,指令碼名


 [MenuItem("CONTEXT/Rigidbody/Initdefult")]//右鍵rigidbody元件,自行設定初始
    static void test3(MenuCommand cmd)//menucommand 是當前正在操作的元件,不需要傳參
    {                    
        Rigidbody rigi = cmd.context as Rigidbody;//as比用括號更溫和,失敗時返回空值
        rigi.useGravity = false;    //不適用重力,摩擦力為0
        rigi.mass = 0;
}
foreach (GameObject  item in Selection .objects  )//對選中物體操作
        {
            Debug.Log(item.name);
            GameObject.DestroyImmediate (item);//刪除選中物體,無法撤銷
            //Undo.DestroyObjectImmediate(item);//可撤銷的刪除
    }
}

選單欄新增快捷鍵  %代表Ctrl  #代表shift  &代表alt

  [MenuItem("Testbtn/test/test1 _t")]按下t就可以執行按鈕對應操作

  [MenuItem ("Testbtn/test/test1&t")]按下alt+t執行

選單項是否啟動

 第二個引數,對應方法為驗證方法,值為true,需要返回一個bool值,為true這可以點選反之則不

 能,要路徑一致,僅作判斷,當返回true,相同路徑的按鈕即可點選

 [MenuItem("Testbtn/test/test2", true ,1)]//當show()方法返回true,test2方可點選
    static bool  show()
    {
        if (Input.GetKey(KeyCode.A)) return true;
        return false;
    }
  [MenuItem("Testbtn/test/test2", false,1)]  
static bool  test2()
    {
       Debug.Log("測試2,,");
    }

ContextMenu  在自己的指令碼中新增右鍵按鈕,在指令碼內,方便訪問該指令碼的屬性等

可以定義上下文選單,和使用 MenuItem 並以“ Context/ 。。”定義選單一樣這個屬性不同的是,你能給指定的元件定義預設的上下文選單項,然而使用 MeneItem 只是為了擴充套件現有的元件選單,比如引擎預設的元件。
public class NameBehaviour : MonoBehaviour
{
    public string Name;
    [ContextMenu("Reset Name")]
    private static void ResetName()
    {
        Name = string.Empty;
    }
}

ContextMenuItem  給指令碼屬性新增右鍵,

被新增到了一個欄位上沒有方法,所有它接受兩個引數:一個用於顯示選單項的名字,一個用於指定一個當選單被選中時要呼叫的例項方法。

 public class NameBehaviour : MonoBehaviour
{                      //    按鈕名字            方法名字           
    [ContextMenuItem("Randomize Name", "Randomize")]
    public string Name;

    private void Randomize()
    {
        Name = "Some Random Name";
    }
}

上面程式碼的結果顯示了當在欄位上單擊右鍵時彈出的選單項:



下載文件點選這裡 https://download.csdn.net/download/nt_xs_j/10503003