Unity 編輯狀態下執行一個方法
阿新 • • 發佈:2019-02-19
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()等方法。