1. 程式人生 > >Unity 編輯狀態下執行一個方法

Unity 編輯狀態下執行一個方法

    Unity 給我們提供了很多方便開發的特性,本文將會介紹 一個比較常用的特性 :ContextMenu   .

    ContextMenu特性常用於編輯模式下場景資料的設定.  舉個例子:   

    “Objects”組下有10個子物體,每個物體身上掛了一個"ObjectData"元件。

       假設目前的需求是:1.在編輯模式下把每個物體“ObjectData”元件上的CubeID設定成跟物體名字索引相對應;

       2.把每一個物體的 x 軸座標都間隔為 1 排開。

       一種方法就是手動去設定,但這太麻煩,如果是1000個物體就沒完沒了了。    這裡就可以用ContextMenu 特性

去實現。

       建立一個SetData指令碼元件,掛在到“Objects”物體上:

程式碼如下 :


之後右鍵點選“Objects”上的“SetData”指令碼元件,就會發現選單中多了一行“SetData”專案。  點選“SetData”即可完成設定.


最終效果:


    在開發過程中,如果場景較大,點選執行往往需要等待好幾秒,ContextMenu特效也可以讓我們在編輯模式下(非執行)執行一些方法。

     注:使用編輯器類Editor裡面的MenuItem特性也可以達到建立例項、設定資料等目的,一個比較主要的區別是 :ContextMenu 作用的方法所在的類是可以繼承自MonoBehaviour的,也就是說使用ContextMenu可以實現 如 :在編輯模式下讓物體實現  transform.LookAt()、transform.Translate()等方法。